malloc:***对象0x165060的错误:未释放指针被释放?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了malloc:***对象0x165060的错误:未释放指针被释放?相关的知识,希望对你有一定的参考价值。
我有一个应用程序,其中我有一些视频和音频和一些inapp purchase.all r伟大的模拟器和工作完美。但昨天我已经创建了一个应用程序,并试图在它上面运行崩溃。错误报告是
malloc: *** error for object 0x165060: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
任何人都可以知道解决方案。我不知道哪里出错了,在模拟器中它工作得很好。任何人都可以帮助我吗?
您可能会释放一个对象太多次(例如,调用alloc一次并释放两次)。要了解哪里,请看看这个问题中的技巧:How to find the cause of a malloc "double free" error?
我个人喜欢NSZombieEnabled
方法。
另一个提示是,在释放它们之后将变量设置为nil。
例如:[bla release]; bla = nil;
这确保你不会意外地释放它们两次,因为释放nil
什么都不做。
我跟着谈话者的建议
在我的情况下,我更换了以下行
[myMutualArray removeAllObjects];
同
[myMutualArray removeAllObjects]; myMutualArray = nil;
错误消失了!
没有看到任何代码我们无法帮助您。但是您可以自己找到问题,错误消息甚至告诉您该怎么做:在malloc_error_break
上设置断点,您通常会在堆栈跟踪中找到导致问题的代码。
仅仅因为它在模拟器中工作并不意味着您的代码是100%正确的。一些错误只出现在真实设备上(反之亦然)。
请测试程序是否存在内存泄漏,还要检查自动释放以及是否正确释放对象。我们还需要检查释放的对象是否分配了内存。您还需要注意自动释放,因为我们不小心会释放一个数组或字符串或任何已经自动释放的对象...
以下是一些可以找出确切问题的提示:
- 您可以通过分析项目来测试泄漏(单击shift + command + k)
- 使用仪器工具即运行泄漏
- 在Xcode中启用NSZombie,程序可以找到here
希望它有所帮助和有效!
这可能是由safari检查员引起的,你可以禁用它们。有关更多详细信息,请参阅此post。
以上是关于malloc:***对象0x165060的错误:未释放指针被释放?的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 8升级后iOS10应用崩溃,返回malloc错误
C++ 使用 getline() 打印:被释放的指针未在 XCode 中分配