-1

我在写C程序的时候遇到了一个问题,如下:

malloc.c:3074: sYSMALLOc: 断言 (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) 失败。

请帮我解决它,在此先感谢!

4

1 回答 1

2

似乎为内存分配保留的管理已损坏。我的猜测是,在发生此错误之前,您在某处有类似缓冲区溢出的情况。

由于该错误是早期问题的结果(假设我是对的),因此这可能是一个难以解决的问题。也许像 valgrind 这样的工具可以帮助您检测对内存的错误写入。如果您有一个演示问题的小程序,我建议将该代码添加到您的问题中。

于 2009-07-08T13:22:34.970 回答