![](/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.