繁体   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