gpt4 book ai didi

c - malloc.c :3096: SYSMALLOC: Assertion failed

转载 作者:太空宇宙 更新时间:2023-11-04 01:08:21 26 4
gpt4 key购买 nike

我的函数如下:

void Insert_ldb(int t){
struct node_ldb *temp_ldb1,*lastnode_ldb;
temp_ldb1=root_ldb[t];
while(temp_ldb1->next!=NULL)
temp_ldb1=temp_ldb1->next;
if(temp_ldb1->next==NULL){
lastnode_ldb=malloc(sizeof(*lastnode_ldb));//error appears at this line
temp_ldb1->next=lastnode_ldb;
}
}

结构体 node_ldb 定义为:

struct node_ldb{
int sno;
int *lvar;
int *object;
struct node_ldb *next;
};

编译时没有出现错误,但执行时终止并显示消息:

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

奇怪的是同一个函数在终止之前成功执行了很多次。那么错误是否可能发生在其他地方?因为即使是 valgrind 也不会显示任何错误。可能是什么问题?

最佳答案

这闻起来很像是在调用 malloc() 之前发生了内存管理损坏。

损坏的内存管理数据导致对 malloc() 的调用失败。

我强烈建议使用内存检查器(例如 Valgrind)运行该程序,直到重现故障。

关于c - malloc.c :3096: SYSMALLOC: Assertion failed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18673605/

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