我正在做一個桶排序,排序指向節點的鏈接列表與虛擬標題。用戶輸入節點的值,然後立即將其放入適當的桶中。當我試圖爲鏈表分配第二個節點(不包括虛擬頭文件)的內存時,出現問題。malloc正在做奇怪的事情與內存地址
這是用於將節點落入水桶的代碼,VAR是正被排序的值,和當前被新創建的節點進行排序:
void bucketSort(int var, nodeptr current)
if(!bucket[var])
{
buckets[var] = (nodeptr) malloc(sizeof(nodeptr));
buckets[var]->next = current;
bucketrear[var] = current;
}
else
{
bucketrear[var]->next = current;
bucketrear[var] = current;
}
}
這是一個簡化的版本(少的代碼值)用於創建新節點:
void addNode(int value)
{
nodeptr newNode;
newNode= (nodeptr) malloc(sizeof(nodeptr));
newNode->value = value;
newNode->next = NULL;
bucketDrop(value, newNode);
}
隨着跟蹤語句,我發現之前的第二節點的malloc的(具有相同的值作爲第一),剷鬥的地址[值] - >下一個是普通地址,但之後地址是17在我做的每一個測試中都出現了17的值。
任何幫助或想法都會很棒。先謝謝你。
'sizeof nodeptr'?你不是指'sizeof node'或'sizeof * newNode'嗎? – Zeta
你可以粘貼你的sctruc嗎? – Maresh
如果您有內存被覆蓋,請首先檢查您是否不使用指向您保存的本地變量的指針。我還推薦諸如[Valgrind](http://valgrind.org/)之類的工具。 –