malloc.c 3096中的问题是什么

时间:2011-07-03 12:23:08

标签: c malloc

> 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.

我在运行使用整数3D指针和普通int变量的c程序时遇到的错误

2 个答案:

答案 0 :(得分:4)

malloc没有问题,错误在你自己的代码中。

答案 1 :(得分:2)

最有可能是在先前分配的内存块之前或之后覆盖了内存。或者你释放了一个块然后写信给它。

也可能在没有释放的情况下分配了太多内存,或者太少(malloc不喜欢负数)。通常这些最后2个不会导致断言,但每个平台都有它自己的怪癖。

有很多方法可以搞乱malloc的头......