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 回答