malloc错误:校验和不正确

malloc错误:校验和不正确,c,malloc,C,Malloc,我正在用C编写代码,收到一个带有错误消息的malloc错误: malloc:**对象0x7fe9d44026d8的错误:已释放对象的校验和不正确-对象可能在被释放后被修改。 ***在malloc\u error\u break中设置断点以进行调试 我的代码的目标是使用read()函数从存储迷宫的字符串将生成的迷宫存储到2D数组中。我在将迷宫读入字符串时没有遇到问题,但是当我将字符串、行数和列数作为参数传递给函数时 这个malloc错误到底意味着什么?如何确定代码的哪一部分产生了此错误?您的ma

我正在用C编写代码,收到一个带有错误消息的malloc错误:

malloc:**对象0x7fe9d44026d8的错误:已释放对象的校验和不正确-对象可能在被释放后被修改。
***在malloc\u error\u break中设置断点以进行调试
我的代码的目标是使用read()函数从存储迷宫的字符串将生成的迷宫存储到2D数组中。我在将迷宫读入字符串时没有遇到问题,但是当我将字符串、行数和列数作为参数传递给函数时


这个malloc错误到底意味着什么?如何确定代码的哪一部分产生了此错误?

您的
malloc()
实现不需要C语言标准要求的额外检查。在这种情况下,似乎检测到内存块中的某些数据在标记为空闲后被修改(通过调用
free()
)。这是你程序中的一个错误


要找到罪魁祸首,请使用内存调试工具。对于*nix系统,有。在windows上,您可以使用。这些工具取代了标准库的内存管理功能,并将立即通知您有关错误的信息,例如写入某个已
空闲()的内存。

您的
malloc()
实现不需要C语言标准所要求的额外检查。在这种情况下,似乎检测到内存块中的某些数据在标记为空闲后被修改(通过调用
free()
)。这是你程序中的一个错误


要找到罪魁祸首,请使用内存调试工具。对于*nix系统,有。在windows上,您可以使用。这些工具取代了标准库的内存管理功能,并将立即通知您有关错误的信息,例如写入某个已
free()
d的内存。

工具Valgrind可以告诉您哪个代码行修改了释放的内存。好的,我来看看,看看我发现了什么。感谢Valgrind工具可以告诉你哪个代码行修改了释放的内存。好的,我来看看,看看我发现了什么。感谢在我的代码中没有对“free()”的调用,但在为我的2D字符数组分配内存时,我调用“malloc()”首先使用“sizeof(char*)”为行分配内存,然后调用“malloc()”在while循环中使用“sizeof(char)”为列分配内存,并遍历每一行。没有对“free()”的调用'但在我的代码中,当为2D字符数组分配内存时,我调用'malloc()'首先使用'sizeof(char*)将内存分配给行,然后调用'malloc()'在while循环中使用'sizeof(char')将内存分配给列,并遍历每一行。