我有一个开发中的iPhone应用程序,当没有启用Malloc防护时,它可以正常工作。但是,当我尝试启用malloc后卫时,我会在加载应用程序后收到以下错误。
#0 0x95f65684 in objc_msgSend ()
#1 0x30506515 in NSPopAutoreleasePool ()
#2 0x30901697 in _UIApplicationHandleEvent ()
#3 0x32046375 in PurpleEventCallback ()
#4 0x30245560 in CFRunLoopRunSpecific ()
#5 0x30244628 in CFRunLoopRunInMode ()
#6 0x308f930d in -[UIApplication _run] ()
#7 0x309021ee in UIApplicationMain ()
现在我的问题是,我无法调试其获取错误的确切位置..已尝试malloc_error_break但没有成功。
是不是malloc guard能够根据分配自动释放一些对象?
答案 0 :(得分:0)
你正在发布一些自动释放的内存。在没有看到任何代码的情况下,很难说出问题到底是什么,但它看起来像这样:
NSString* aVar = [NSString stringWithFormat:@"Hello %@", worldVariable];
...
[aVar release];
这不会在发布语句中崩溃(因为引用计数至少为1),但将在自动释放池“耗尽”的运行循环中的某个稍后点崩溃。