1

この関数を使用してメモリを監視したいと思います。

void print_free_memory ()
{
mach_port_t host_port;
mach_msg_type_number_t host_size;
vm_size_t pagesize;

host_port = mach_host_self();
host_size = sizeof(vm_statistics_data_t) / sizeof(integer_t);
host_page_size(host_port, &pagesize);

vm_statistics_data_t vm_stat;

if (host_statistics(host_port, HOST_VM_INFO, (host_info_t)&vm_stat, &host_size) != KERN_SUCCESS)
    NSLog(@"Failed to fetch vm statistics");

/* Stats in bytes */
natural_t mem_used = (vm_stat.active_count +
                      vm_stat.inactive_count +
                      vm_stat.wire_count) * pagesize;
natural_t mem_free = vm_stat.free_count * pagesize;
natural_t mem_total = mem_used + mem_free;
NSLog(@"used: %u free: %u total: %u", mem_used, mem_free, mem_total);
}

A. この関数を Xcode プロジェクトのどこに配置すればよいですか?

B. どのように呼びますか? 明らかに、メモリを継続的に監視するように設定したいと思います。

4

2 に答える 2

10

A. この関数を Xcode プロジェクトのどこに配置すればよいですか?

定義を別の .c ファイルに入れ、宣言を別のヘッダー ファイルに入れます。

PrintFreeMem.h

extern void print_free_memory();

PrintFreeMem.c

#include "PrintFreeMem.h"
void print_free_memory() {
    // Your implementation
}

B. どのように呼びますか?

ヘッダー ファイルをインクルードした後、通常の C 関数を呼び出す方法で呼び出すことができます。

#include "PrintFreeMem.h"

-(void)myMethod {
    ...
    print_free_memory();
}
于 2012-08-17T04:23:42.060 に答える
0

ヘッダーファイルで宣言を行い、この関数を実装ファイルに書き込むか、関数を実装ファイルに入れるだけですが、関数は以下の行からのみ呼び出すことができます。

print_free_memory ();

これがうまくいくことを願っています

于 2012-08-17T04:18:08.560 に答える