簡體   English   中英

釋放結構

[英]Freeing a struct

我有一個鏈表結構,我使用了一個節點結構來幫助我存儲數據並知道每個節點指向的位置。 在創建我的列表時,我這樣做了:

struct list {
 
 struct node *Head;
 struct node *Tail;
}

struct node{
  int val;
  struct node * next;
}
struct list create_list(){
    struct list new_list;
    new_list = malloc(sizeof(struct list));
}

然后,當我試圖釋放我分配的列表時,我這樣做了

void free_list(struct list linked_list){

  free(linked_list);
}

然而,我意識到我可能malloced錯了,因為當你malloc時,你需要將它分配給一個指針。 當我想釋放我最初分配的鏈接列表時,沒有任何改變。

我認為這可能是因為我發送到 free() 的 links_list 不是指針,因此沒有進行任何更改。 我嘗試向其中添加 & 和 *,但最終出現錯誤....

任何提示或幫助表示贊賞。

編輯:

修復了結構列表上的錯別字。

這是硬件,所以我無法更改函數的參數,這讓我很難釋放我制作的鏈表。 這是因為函數 free_list() 無法將其參數更改為指針鏈表,所以我不知道該怎么做。

我還將注意我何時在 create_list 函數中為鏈表分配內存。

是的,通過值傳遞鏈表而不是在堆上傳遞這么小的東西。

這是否更像你想要的:

struct list create_list(){
    struct list new_list = { NULL, NULL };
    return list;
}

void free_list(struct list linked_list){
    struct node *next;
    for (struct node *node = linked_list.Head; node; node = next;)
    {
        temp = node->next;
        free(node);
    }
}

因此只釋放用malloc()分配的列表節點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM