0

我有一个奇怪的问题 - 我的应用程序仅在设备上泄漏内存,而不是在模拟器上。如果我在任何地方、任何场景中安排更新方法,它就会泄漏。尽管更新方法为空,但它仍在泄漏,其中除了 NSLog 之外什么都没有。怎么会这样?我什至在第一个似乎没有任何泄漏的场景上安排了更新,并安排了另一个空的并且它正在泄漏或不泄漏但分配了一些东西,结果是一样的 - 消耗的内存量正在增加,我的应用程序是很快就崩溃了。我可以通过使用 Instruments->Memory->Activity Monitor 或借助以下功能来检测泄漏:

void report_memory(void) 
{
struct task_basic_info info;
mach_msg_type_number_t size = sizeof(info);
kern_return_t kerr = task_info(mach_task_self(),
                               TASK_BASIC_INFO,
                               (task_info_t)&info,
                               &size);
if( kerr == KERN_SUCCESS ) 
{
    NSLog(@"Memory in use (in bytes): %u", info.resident_size);
} 
else 
{
    NSLog(@"Error with task_info(): %s", mach_error_string(kerr));
}
}

谁能解释我发生了什么事?

4

0 回答 0