对象0xb50dd20的错误:双重释放。

3

有人熟悉这个问题吗?我阅读了这篇文章,但是当我不知道错误在代码的哪里发生时,很难提供代码。有人有什么想法吗?

Name(9369,0xa09cd500) malloc: * error for object 0xb50dd20: double free * 设置断点在malloc_error_break以进行调试

2个回答

4

按照调试器的提示操作:在malloc_error_break上设置断点。

运行 → 管理断点 → 添加符号断点。


我来自.NET背景 - 我已经按照您所说的做了,但它要求断点的名称是什么? - TheLearner
很奇怪。你启用了断点吗?(在代码中的任何常规断点都有效吗?)你的代码中似乎有一些手动的“free”调用。如果它们不太多,你可以在它们上面设置一个常规断点或日志语句,并查看哪一个是罪魁祸首。 - zoul
如果您在 malloc_error_break 上得到了一个中断,您应该能够通过 Xcode 调试器中的堆栈导航来查看造成这种情况的调用。 - zoul
1
你需要在堆栈跟踪(调试器的左侧列)中“向上”查找,直到找到一个你认识的方法调用。那应该会告诉你错误出现在哪里。很高兴你已经解决了它。 - Stephen Furlani
在 Xcode 4.3.2 中,断点可以在 View → Navigators → Show Breakpoints Navigator 或 ⌘6 (Cmd-6) 中找到。 - Andreas Ley
显示剩余4条评论

1

你释放了一个不该由你负责的对象...
这个主题有很多讨论。

总结一下,你只需要释放(或自动释放)那些你使用alloc、retain或copy方法创建的对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接