【发布时间】:2010-11-09 00:56:22
【问题描述】:
我在写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) >= (无符号长)((((__builtin_offsetof (结构 malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & 页面掩码) == 0) 失败。
请帮我修复它,在此先感谢!
【问题讨论】:
-
看起来像堆误用。你应该提供一个暴露它的sn-p。
-
你能用一个小例子重现它吗?大约有十行代码。
-
我只是使用 malloc() 方法来获取一些内存。如果我评论此行,则不会发生此问题。
-
行就是这样 char *seq=malloc(1000*sizeof(char));当然,还有更多这样的行。但我不知道它在哪里。
-
尝试使用许多断言。不要将所有这些逻辑测试组合成一个语句,如果您想轻松定位问题。