簡體   English   中英

使用帶有malloc()和free()的指針的可能的內存泄漏,以及與指針符號的混淆

[英]possible memory leak using pointers with malloc() and free(), and confusion with pointer notation

因此,我對C還是比較陌生,我正嘗試為單鏈表編寫代碼。

這就是我為從列表開頭刪除節點而寫的內容。

int delete(struct node **head)
{
    int x = -1;
    if(*head != NULL) {
        struct node *old = *head;
        (*head) = (*head)->next;
        x = old->data;
        free(old);
    }
    return x;
}

我對free()函數感到困惑。 我是將分配給指針的空間釋放為old還是將其釋放為old點的地址? 也許正確的做法是free(*old) 此代碼會導致內存泄漏嗎?

另外,如果這釋放了分配給old的內存,那么free(&old)的結果將是什么?

從您顯示的內容來看,內存管理似乎還可以,並且似乎不會泄漏內存。

我要釋放分配給指針的空間嗎?

是的,代碼將釋放old點,將old點釋放到內存中,這通常稱為將內存分配給指針


free(*old)不起作用,因為它無法編譯,因為您試圖將struct傳遞到期望指針的位置。

free(&old)不起作用,因為它會引發未定義的行為,因為代碼試圖釋放分配在堆棧上的內存,也就是指針變量old本身的內存。

暫無
暫無

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

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