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
答案 0 :(得分:0)
所有关于用于构建库的目标上的编译设置。
Nvwa使用特定于平台的宏来识别可用的线程库,因此在iOS上通常不会定义_PTHREADS并且我没有允许C ++ 11互斥锁定义NVWA_USE_CXX11_MUTEX设置为1.所以我们有几个替代方案,定义_PTHREADS,允许使用C ++ 11互斥锁或更改Nvwa代码以检查_POSIX_THREADS宏... < br />
绝对需要“正确”互斥的地方之一是更新用于报告泄漏的分配列表(在debug_new.cpp中)。在没有同步的情况下,下一个元素指针最终会指向释放的内存,而使用后只是一个时间问题。
答案 1 :(得分:0)
您的泄漏检测库显然具有讽刺意味着存在堆损坏错误,可能会在免费后使用。我建议您使用Instruments或malloc历史来确定之前对应的地址,然后审核该分配的生命周期并指向它。