'malloc(): corrupted top size'是什么意思

What is the meaning of `malloc(): corrupted top size`

提问人:Debuholden 提问时间:11/9/2023 更新时间:11/9/2023 访问量:71

问:

我正在尝试将结构指针附加到动态分配的数组中。之后,我返回添加到数组中的结构指针。然后将其取消引用并放入我想要打印的变量中。我的问题是,当我尝试访问一个值(即)时,编译器会告诉我 和 。struct.idmalloc(): corrupted top sizeAborted (core dumped)

到目前为止,我所看到的任何地方都只是简单地回答了如何解决问题,但我似乎无法弄清楚它的实际含义,或者只是找到对我没有帮助的非常模糊的定义。此外,没有一种解决方案适用于我的特定情况。已中止(核心转储)

c 指针 struct malloc

评论

1赞 Eugene Sh. 11/9/2023
这意味着您通过写入某些不允许写入的位置损坏了内存中的某些堆元数据。此元数据是特定于实现的。
0赞 pmg 11/9/2023
显然,您尝试在分配的内存之外写入。strcut whatever *ptr = malloc(sizeof *ptr); ptr[1] = INVALID ACCESS;

答:

0赞 0___________ 11/9/2023 #1

是什么意思malloc(): corrupted top size

这意味着您的程序很可能通过访问其边界之外的分配内存块来调用 Undefined Behaviour。

但它也可能是由其他原因引起的(例如,不相关的内存访问更改了包含 ed 内存元数据的内存)。malloc

此外,没有一种解决方案适用于我的特定情况。中止 (核心倾倒)

这是UB表达自己的方式之一。这不是“你的条件”。您需要找到调用 UB 的内容。