> 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.
当我运行c程序时遇到的错误,该程序使用整数3D指针和普通int变量
malloc没有问题,错误在您自己的代码中。
很可能是在之前分配的内存块之前或之后覆盖内存。或者你释放了一个区块,然后无论如何都写信给它。
也有可能是您分配了太多内存而没有释放,或者太少(malloc不喜欢负数(。通常,后两个不会引起断言,但每个平台都有自己的怪癖。
有很多方法可以扰乱malloc的头脑。。。。