ios malloc:***错误:已释放对象的校验和不正确-对象可能在释放后被修改

ni65a41a  于 2023-01-14  发布在  iOS
关注(0)|答案(5)|浏览(128)

我的iOS应用程序遇到了一个大问题:它有时会崩溃,但没有详细的调试错误。堆栈跟踪为空。堆栈跟踪中只有以下两行:

  1. UIApplicationMain中的“符号存根”崩溃启动:-[_UI托管文本服务会话解除文本服务动画:]"。
    1.并报告“库系统_c.dylib '内存分配错误中断”。
    com.apple.main-thread中。
    Xcode调试器上的错误(连接设备):
malloc: *** error for object 0x208a7614: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug

我用libsystem_c.dylib在malloc_error_break中设置了一个断点,但调试器没有任何反馈。我不知道如何解决这个问题。

rdrgkggo

rdrgkggo1#

要找到问题的根源,请在Xcode中转到产品〉方案〉编辑方案,并在诊断选项卡下启用所有的Malloc设置和Guard Malloc。
然后,再次运行应用程序,Xcode将停在导致问题的行。

nc1teljy

nc1teljy2#

既然你在调试器中,你应该查看内存位置0x208a7614,看看那里有什么,内存中的数据可能有助于找出问题所在。
发生的情况是以下情况之一:
1.你释放了一个对象两次
1.您正在释放一个从未分配过的指针
1.你正在写一个无效的指针,这个指针先前指向一个已经被释放的对象
由于堆栈跟踪是空的,在代码的不同位置添加一些调试日志语句可能会很有用,看看是否可以缩小问题所在的范围。使用Instruments中的内存工具也可能会有帮助。您可以尝试打开NSCombies,但这看起来像是C分配问题,而不是Objective-C问题。
还有,在崩溃之前是否有其他东西写入控制台?如果有,它可能会向您指出问题的来源。

wtlkbnrh

wtlkbnrh3#

大家好,我找到了这个解决方案,如果你使用的是nib或xib接口,当你想推一个viewcontroller对象时,你会遇到这个问题,那么有时会发生这个错误,你的应用程序会崩溃(特别是iPad中的错误)下面是解决方案:
//格式如下

UINavigationController *nav=[[UINavigationController      alloc]initWithRootViewController:yourViewControllerObj];

[self.navigationController  presentViewController:nav animated:true completion:nil];

这种情况下不要用力推。

8yparm6h

8yparm6h4#

如果您遇到此问题,请访问:产品-〉方案-〉诊断-〉然后启用 mollic gaurd edge 和 * 僵尸对象 * 然后关闭然后转到产品-〉停止然后再次产品-构建和运行。

h9a6wy2h

h9a6wy2h5#

我也有同样的问题。
我有一个macOS 2015,大sur 11.7.
这一切都是从我更新我的xcode开始的,似乎大sur可用的最后一个xcode版本有一些bug。
调用c++和python绘图的fortran代码未运行
我将Xcode降级到12. 5,以及这个Xcode版本的Comand Line工具,但仍然存在同样的问题。
而且是间歇性的。有时代码生成错误,有时不会...

相关问题