Xcode:释放对象的校验和不正确?

Xcode:释放对象的校验和不正确?,c,malloc,breakpoints,C,Malloc,Breakpoints,我似乎每隔一段时间(不是每一次)就会发生一次sigabrt碰撞 现在,我知道这意味着我可能在调用free()后试图访问或更改一个对象,但我想知道如何使用上面列出的内存地址找出它所指的对象。谢谢 这是我在它崩溃之前看到的(它在NSLog上崩溃): 一个选项可能是使用调试malloc替换,这样可以帮助您跟踪malloc/免费调用的源文件和行号。您正在运行什么操作系统?如果这是Linux/UNIX,您应该能够获得一个核心转储(您可能必须首先启用它们),然后将其加载到gdb或任何合适的调试器中。从那里

我似乎每隔一段时间(不是每一次)就会发生一次sigabrt碰撞

现在,我知道这意味着我可能在调用free()后试图访问或更改一个对象,但我想知道如何使用上面列出的内存地址找出它所指的对象。谢谢

这是我在它崩溃之前看到的(它在NSLog上崩溃):


一个选项可能是使用调试malloc替换,这样可以帮助您跟踪malloc/免费调用的源文件和行号。

您正在运行什么操作系统?如果这是Linux/UNIX,您应该能够获得一个核心转储(您可能必须首先启用它们),然后将其加载到
gdb
或任何合适的调试器中。从那里,您应该能够通过检查调用堆栈、符号表、转储内存等来识别该地址指向的对象。或者,您可以按照错误建议执行操作,并在
malloc\u error\u break
中设置断点。我使用的是OS X Yosemite 10.10.3,使用的是Xcode 6.3.1,我从未在OS X中开发过,但据我所知,它是基于Unix的,所以您应该能够获得一个内核转储。查看内核转储可能不是最快或最容易识别泄漏对象的方法(取决于代码的复杂性),因此您可能也想考虑其他选项,例如JARMOD对DMALLC的建议。您可能还想在这里添加一个OS X标签,以便您可以从具有OS X、XCODE等经验的人那里得到帮助。在XCODEL编译BOG标准C++程序之后,我偶尔会收到此错误消息。它直接发生在编译之后,然后在我再次运行时不再出现。这可能与IDE挂起调试二进制材料有关,但我不确定。更新到我的最后一条评论:我注意到错误发生在成功编译之后,但可能发生在IDE中的“索引”消息之前-可能与XCode的索引(即解析)有关您的代码的一部分,如自动完成等。
malloc: *** error for object 0x7ff8884644c0: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug.