簡體   English   中英

在 C 中使用未初始化的 memory 指針

[英]Using uninitialized memory pointer in C

我正在創建一個通用庫,用於處理 C 中的列表。 我想實現這個名為destroy的方法,它將通過釋放它的每個元素來為這個列表釋放memory,但是編譯器一直給我這個警告,盡管在我使用這個庫制作的程序中一切正常:

警告 C6001 使用未初始化的 memory '*指針'。

我怎樣才能防止這個警告?

void destroy(list* first_elem)
{
    item* pointer = *first_elem;

    if (*first_elem == NULL) {
        return;
    }
    while (pointer->next != NULL) { //here's the warning
        item* toKill = pointer;
        pointer = pointer->next;
        free(toKill);
    }
    free(pointer);
    *first_elem = NULL;
}

項目和列表的定義:

typedef struct item_struct {
    Set value;
    struct item_struct* next;
} item;
typedef item* list;

我假設當您創建項目結構時,您沒有初始化“item_struct *next”指針。

item i;
i.value = ....;
i.next = NULL; // Add this into your code.

使用未初始化的變量是一種未定義的行為。 因此,它可能會導致問題。 即使您的代碼在您的計算機上運行正常,這並不一定意味着它可以在另一台計算機上運行而不會出現錯誤。

暫無
暫無

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

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