Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用Xcode调试free()_Ios_Xcode_Debugging_Memory Management - Fatal编程技术网

Ios 使用Xcode调试free()

Ios 使用Xcode调试free(),ios,xcode,debugging,memory-management,Ios,Xcode,Debugging,Memory Management,我在尝试运行正在开发的iOS应用程序时遇到以下错误: appname(6097,0x3e835d98)malloc:**对象0x20104600的错误:未分配要释放的指针 ***在malloc\u error\u break中设置断点以进行调试 如何找出是哪个调用free()生成了此错误?如果我为malloc\u error\u break添加断点,我得到的整个堆栈跟踪是对“malloc\u error\u break”的调用,如下所示: libsystem\u c.dylib`malloc\

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

appname(6097,0x3e835d98)malloc:**对象0x20104600的错误:未分配要释放的指针
***在malloc\u error\u break中设置断点以进行调试
如何找出是哪个调用
free()
生成了此错误?如果我为
malloc\u error\u break
添加断点,我得到的整个堆栈跟踪是对“
malloc\u error\u break
”的调用,如下所示:

libsystem\u c.dylib`malloc\u error\u break:
0x32f20fa8:push{r7,lr}<线程1:断点1.1
0x32f20faa:mov r7,sp
0x32f20fac:nop
0x32f20fae:nop
0x32f20fb0:pop{r7,pc}
0x32f20fb2:nop
如果我没有为
malloc\u error\u break
添加断点,我会得到一个类似的无用堆栈跟踪,但这次只有一个
\u pthread\u kill
和一条汇编指令


我还能做些什么来更好地了解产生此错误的代码吗?

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

void* data = malloc(100);    
free(data);
free(data);
然后我打开“产品->编辑方案”,单击“Test.app”选项卡并单击“诊断”。然后我选择“启用保护Malloc”


现在,如果我运行该应用程序,我会在第二个
free

上休息一下。我刚刚用以下
main
方法创建了一个名为“Test”的新项目:

void* data = malloc(100);    
free(data);
free(data);
然后我打开“产品->编辑方案”,单击“Test.app”选项卡并单击“诊断”。然后我选择“启用保护Malloc”


现在,如果我运行应用程序,我会在第二个
free

的时候休息一下。你试过用仪器进行内存分析吗?使用malloc()和free()的应用程序是什么?“你不是在用Objective-C吗?”苏尔坦,我确实试过仪器,但在那里我也找不到任何有用的东西。但也许我找的地方不对。。。使用工具调试内存分配时,我看到的只是-分配,与此错误无关。我认为信息应该出现在内存分配中的某个位置,但我也找不到。您是否尝试使用工具进行内存分析?使用malloc()和free()的应用程序是什么?“你不是在用Objective-C吗?”苏尔坦,我确实试过仪器,但在那里我也找不到任何有用的东西。但也许我找的地方不对。。。在使用仪器调试内存分配时,我看到的只是-分配,与此错误无关。我认为信息应该出现在内存分配中的某个位置,但我也找不到。显然,您不能在设备上使用Guard Malloc。我会在模拟器里试试。显然,你不能在设备上使用Guard Malloc。我会在模拟器里试试。