如何检测内存分配/空闲错误的对象?
How to detect the object with memory alloc/free error?
Mac OS X. 我运行一个应用程序,它加载了一个 odbc 驱动程序。我在系统中看到.log消息:
malloc:*** 错误,因为对象对释放对象的校验和不正确 - 对象 ххх 可能在释放后被修改
另外,我有这个驱动程序的 c++ 源代码,但没有看到 malloc/free 问题所在。
如何检测和定位对象 xxx 是什么?
macOS/OS X有一个名为Guard Malloc的东西,它包含许多机制,用于在故障点检测此类问题(可能是内存覆盖或释放后写入(。
要使用它,您所要做的就是在启动应用程序之前设置一些环境变量,并确保在加载libgmalloc.dylib
的情况下运行,例如:
DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib MallocGuardEdges=1 myprog
如果MallocGuardEdges
被记录为执行:
如果设置,
malloc
在大型分配之前和之后添加保护页。
文档也有这样说(我隐约记得必须这样做一次(:
要使用 Guard Malloc启用调试,请将项目配置为在 Xcode 方案编辑器中使用 Guard Malloc 运行。
因此,这将避免对DYLD_INSERT_LIBRARIES
技巧的需求。
完整的细节在这里。
相关文章:
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 模板,函数使用错误的构造函数来复制我的对象
- 有没有办法让编译器在我放置字符串而不是 nlohmann::json 对象时抛出错误?
- std::unordered_map 类型对象声明期间出现"field has incomplete type"错误
- 错误:malloc:对象 0x7f9edf504080 的 *** 错误:未分配正在释放的指针
- 从对象C++中的文件读取内容时出现分段错误
- cout 新创建的对象引发运行时错误
- 错误:"释放后使用包装器对象 (WRAPPER_ESCAPE)"
- 使用返回对象的函数处理错误
- 创建 QtChart 对象会在运行时创建EXC_BAD_ACCESS错误
- 错误:无法传递非平凡类型"std::string"的对象和更多错误
- 该对象具有与成员函数不兼容的类型限定符.为什么会出现此错误?
- 如何在类模板的成员函数中正确调用函数对象?正在生成 Visual Studio 编译器错误 C2440
- 尝试将对象插入空指针数组时出现分段错误
- 错误:三元运算符无法在对象中正常工作"cout"
- C++:如果括号为空,为什么不抛出错误对象?
- qt vsaddin错误对象引用未设置为对象的istanse
- 如何从函数返回成功或错误对象?
- 复制构造函数错误:对象的类型限定符与成员函数不兼容
- 如何在本机插件中创建node.js错误对象