gpt4 book ai didi

C Sysmalloc 断言失败

转载 作者:行者123 更新时间:2023-11-30 15:17:49 25 4
gpt4 key购买 nike

我在运行 C 程序时遇到以下 sysmalloc 错误。

malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *)
&((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd))))
&& old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)
((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))
+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1)))
&& ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.

使用 int 数组时程序运行良好

int(*M)[cnt] = malloc(sizeof(int[cnt][cnt]));

但是显示了上述有关有符号长整型的错误。程序中没有进行其他更改。

signed long int(*M)[cnt] = malloc(sizeof(signed long int[cnt][cnt])); 

可能是什么原因?当使用 int 数组时,这非常有效。因此,这里给出的内存管理不应该有问题 C Malloc assertion failure

谢谢

最佳答案

这个断言表达式看起来像是一个健全性检查,以查看分配内部数据结构是否仍然完好无损。

此内部数据通常放置在分配的 block 之前和/或之后。如果出现问题,则意味着在此 malloc() 之前执行的代码已写入到较早分配的 block 的范围之外。

编辑:在谷歌上搜索 Assertion (old_top == (((mbinptr) (((char *)
&((av)->bins[((1) - 1) * 2])) -
直接引导我到 this 。你没有用谷歌搜索吗?

关于C Sysmalloc 断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31936229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com