首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Xcode调试free()

使用Xcode调试free()
EN

Stack Overflow用户
提问于 2012-06-11 02:21:11
回答 1查看 414关注 0票数 1

我在尝试运行我正在开发的iOS应用程序时遇到以下错误:

代码语言:javascript
复制
appname(6097,0x3e835d98) malloc: *** error for object 0x20104600: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug

如何找出是哪个对free()的调用生成了此错误?如果我为malloc_error_break添加一个断点,我得到的整个堆栈跟踪都是对"malloc_error_break“的调用,如下所示:

代码语言:javascript
复制
libsystem_c.dylib`malloc_error_break:
0x32f20fa8:  push   {r7, lr}                           < Thread 1: breakpoint 1.1
0x32f20faa:  mov    r7, sp
0x32f20fac:  nop    
0x32f20fae:  nop    
0x32f20fb0:  pop    {r7, pc}
0x32f20fb2:  nop    

如果我不为malloc_error_break添加断点,我会得到一个同样无用的堆栈跟踪,但这次只有一条__pthread_kill和一条汇编指令。

还有什么我可以做的,以更好地了解生成此错误的代码?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-11 03:38:48

我刚刚用下面的main方法创建了一个名为"Test“的新项目:

代码语言:javascript
复制
void* data = malloc(100);    
free(data);
free(data);

然后打开“产品->编辑方案”,单击"Test.app“选项卡,然后单击"Diagnostics”。然后我选择"Enable Guard Malloc“。

现在,如果我运行应用程序,我会在第二个free上获得一个中断。

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

https://stackoverflow.com/questions/10971179

复制
相关文章

相似问题

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