在我的应用程序中,我得到一个例外:MyApp(38431,0xa004ffa0) malloc: *** error for object 0xa08be760: pointer being freed was not allocated
XCode有没有办法告诉我这个指针在哪里?我怎样才能找到问题所在?
我知道我可以输入信息行* [地址],它可以显示该行的位置。但现在它对我不起作用。
如何获取抛出异常的变量的行或名称?
提前谢谢你, 伊利亚安德
答案 0 :(得分:5)
你在不调用malloc()的情况下调用free()。寻找未初始化的指针。如果您正在使用调试器(gdb),则应该能够为“backtrace”键入“bt”,这将在错误发生时显示堆栈。
答案 1 :(得分:3)
在gdb中尝试
bt
获取有关错误发生时间的更多信息。尝试释放未分配的内存是一个常见的错误,gdb + xcode提供了许多工具来帮助您找出问题所在。
答案 2 :(得分:2)
您应该能够设置一个malloc_error
断点,这会导致您的程序在打印出相关邮件时中断。
您还可以使用以下方法从地址中找到分配点:
malloc_history <pid> <addr>
。