C - malloc 错误:校验和不正确



我正在用 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()内存。

相关内容

  • 没有找到相关文章

最新更新