首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >malloc错误-[CFString发布]

malloc错误-[CFString发布]
EN

Stack Overflow用户
提问于 2011-01-19 10:37:54
回答 2查看 985关注 0票数 0

由于某种原因,我的应用程序在一个特定的动作上崩溃了。经过调查,我发现是因为发布了一些已经发布的东西。然后我在互联网上读到,我可以用NSZombie和MallocStackLogging追踪原因,我实现了这一点,并得到了这个结果。

NSZombie: 2011-01-19 14:39:09.523 iota13649:207 * -CFString发布:发送给已释放的实例0xeeaf510

malloc_history

ALLOC 0xeeaf510-0xeeaf52f size=32: thread_a0041500财政开始主收,UIApplicationMain,GSEventRun,GSEventRun,GSEventRunModal,GSEventRunModal,CFRunLoopRunSpecific,CFRunLoopRun,__CFRunLoopDoTimer,CFRunLoopRunSpecific,CFRunLoopRun,__CFRunLoopDoTimer,CFRunLoopRun,__NSFireDelayedPerform,__NSFireDelayedPerform,-UITableView _userSelectRowAtIndexPath:-UITableView,_selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:,ALLOC,corpDirViewController:shouldContinueAfterSelectingContact:,En19 en25 20,en22,en24 en25_sqliteStatementApplyValuesFromRecordWithNullValue,CFStringCreateWithCString,CFStringCreateWithCString,__CFStringCreateImmutableFunnel3,__CFStringCreateImmutableFunnel3,_CFRuntimeCreateInstance,malloc_zone_malloc,malloc_zone_malloc

现在我不知道是什么原因造成了这次坠机。有人能帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-19 10:44:27

验证您在该字符串上的分配/释放。alloc+retain的数量必须等于发布的数量。不要释放自动释放对象。

票数 0
EN

Stack Overflow用户

发布于 2011-01-19 10:46:53

正如您已经知道的,您正在对一个已经销毁的对象调用release。也就是说,您曾经多次在对象上调用release (在本例中是NSString)。通过NSZombieEnabled完成的异常现在告诉您“一次太多”的发布是在哪里完成的。但大多数时候你都在寻找中间的版本,这很难做到.

现在您已经知道了它在哪里崩溃(因此应该知道涉及哪个变量),您需要阅读代码,在代码中也要释放这个变量,或者如何将对象分配给该变量,然后检查这些源。也就是说,您需要“回溯”对象的来源和使用它所做的事情。在它的生命的某个地方,你要么忘记了retain,要么你意外地在不应该的地方发现了release/autorelease

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4734251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档