我在C中遇到了一些代碼的問題,我真的需要你的幫助。嗯,我這2層結構(他們被要求是這樣的,所以我們水溼改變它們)動態數組指向結構節點的指針
struct node{
struct list_node **table;
int table_size;
};
struct list_node{
int num;
struct list_node *ptr;
};
,正如你可以在我們有一個數組的第一個看到,隨着指針在節點我們名單。在主,我們創建所需的存儲空間,開始喜歡這個
struct node *nodeT;
struct list_node *root, *curr, **temp;
root = (struct list_node*)malloc(sizeof(struct list_node)); // root node of list
nodeT = (struct node*)malloc(sizeof(struct node)); // single node
nodeT->table = (struct list_node**)malloc(sizeof(struct list_node*));
nodeT->table_size = 0;
,然後我創造名單
for(i=0 ; i<X ; i++){ // X is important for the errors and i'll explain why
curr = (struct list_node*)malloc(sizeof(struct list_node));
curr -> num = (i+1);
curr -> ptr = root;
root = curr;
}
現在,我通過列表運行和我展開的第一個結構數組我找到的everysingle列表節點,輸入一個指向正確節點的指針。
for(curr=root ; curr!=NULL ; curr=curr->ptr){
nodeT->table[nodeT->table_size] = curr;
nodeT->table_size++;
temp = (struct list_node**)realloc(nodeT->table , nodeT->table_size*sizeof(struct list_node *));
if(temp!=NULL)
nodeT->table = temp;
else{
printf("Memory error\n");
return 1;
}
}
我用這個結構list_node **溫度保持安全NODET和檢查後,如果一切正常,我把溫度在NODET再次,否則我停止PROGRAMM。最後,我通過像這樣的陣列指針打印列表的內容
for(i=0 ; i<nodeT->table_size ; i++)
printf("-> %d ", nodeT->table[i]->num);
printf("\n");
我退出程序。在這個悖論是,對於X 1-4一切工作正常,但對於5+有一個問題,我收到一條消息
「** glibc detected * ./dynamix_table_realloc:realloc():invalid next大小:0x0000000000819050 *「
和約20多行,那真的不幫我。我希望你會的,這就是爲什麼我發佈這個。提前致謝!