![](/img/trans.png)
[英]Is computing a pointer to uninitialized memory undefined behavior in C?
[英]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.