主:malloc.c:2405:SYSMALLOC:斷言`(old_top == initial_top(AV)& & old_size == 0)|| ((unsigned long)(old_size)> = MINSIZE & & prev_inuse(old_top)& &((unsigned long)old_end &(pagesize - 1))== 0)'failed。SYSMALLOC:斷言
當試圖產生一個雙向鏈表,用戶可以只添加到頭部或尾部,我最終得到可愛的流產消息在頂部。
我已經使用gdb將其縮小到它造成這種情況的功能,但我真的不知道我在做什麼錯誤。它分配第一個節點,然後,它會拋出錯誤。
的功能如下:
data* initD(){
data *D = NULL;
D = malloc(sizeof(data*));
if (!D){
printf("Error in allocation of data\n");
exit(0);
}
D->head = NULL;
D->tail = NULL;
D->next = NULL;
D->prev = NULL;
D->val = -1;
return D;
}
'malloc(sizeof(data *))'?如果'sizeof(data)!= sizeof(data *)'(這看起來很可能考慮你以後的任務)呢? –
爲什麼不是?它只是一個指向內存中某個地方的指針。數據是一個在頭文件中定義的結構,所以我不明白它不可能是數據的大小* – Ohunter
@Ohunter指針的大小是固定的。但是你的結構可能會比指針的大小更大。任何類型的指針的大小都是相同的。 –