我正在用 C 编码并收到带有错误消息的 malloc 错误:
malloc: *** error for object 0x7fe9d44026d8: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
我的代码的目标是将生成的迷宫从使用 read(( 函数存储迷宫的字符串存储到 2D 数组中。我将迷宫读取到字符串中没有问题,但是当我将字符串、行数和列数作为参数传递给函数时
这个malloc错误到底是什么意思?我如何确定我的代码的哪一部分正在创建此错误?
malloc()
的实现会执行 C 语言标准不需要的其他检查。在这种情况下,它似乎检测到内存块中的某些数据在被标记为可用(通过调用free()
(后被修改。这是程序中的错误。
要找到罪魁祸首,请使用内存调试工具。对于 *nix 系统,有 valgrind。在Windows上,您可以使用drmemory。这些工具取代了标准库的内存管理功能,并会立即通知您有关错误的信息,例如写入已free()
内存。