Nvwa 在其删除运算符覆盖中的免费调用上崩溃,尤其是在模拟器上,出现错误:
malloc: *** error for object [hexadecimal address]: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
问问题
160 次
2 回答
0
这一切都与您用于构建库的目标上的编译设置有关。
Nvwa 使用特定于平台的宏来识别可用的线程库,碰巧 _PTHREADS 通常没有在 iOS 上定义,我不允许 C++11 互斥锁,因为没有定义 NVWA_USE_CXX11_MUTEX 设置为 1。所以我们几乎没有选择,要么定义 _PTHREADS ,允许使用 C++11 互斥锁或更改 Nvwa 代码以检查 _POSIX_THREADS 宏...
绝对需要“正确”互斥锁的地方之一是更新用于报告泄漏的分配列表(在 debug_new.cpp )。如果不在那里同步,下一个元素指针必然最终指向已释放的内存,并且释放后使用只是时间问题。
于 2014-12-26T15:52:01.203 回答
0
具有讽刺意味的是,您的泄漏检测库显然有一个堆损坏错误,可能是在释放后使用。我建议您使用 Instruments 或 malloc 历史来确定该地址先前对应的内容,然后审核该分配的生命周期和指向它的指针。
于 2014-12-26T23:44:44.687 回答