读取访问违规当前为0xCDCDCDCD,链接列表窗口



debug中的错误:读取访问违规当前为0 xcdcdcdcd

请帮助我

这是结构

typedef struct node
{
    int data;
    struct node* next;
} node_t;

这是添加新数据的功能

node_t* push(node_t* head, int data)
{
    node_t* current = (node_t*)malloc(sizeof(node_t));
    current->data = data;
    current->next = head;
    head = current;
    return current;
}

此功能打印列表的所有数据

void print_list(node_t* head)
{
    node_t* current = head;
    while (current != NULL)
    {
        printf("Data: %dn", current->data); // READ ACCESS VIOLATION
        current = current->next;
    }
}

程序主管

int main()
{
    node_t* head = (node_t*)malloc(sizeof(node_t));
    head = push(head, 1);
    head = push(head, 2);
    print_list(head);
    return 0;
}

您永远不会在首次使用之前初始化 head的内容。0xCDCDCDCD是非初始化的内存,至少在Microsoft编译器下,并定义了_debug的构建。因此,head->nexthead->data将在调试模式下为0xCDCDCDCD,并且在发行版构建中未定义的数据。

而不是使用节点的非初始化实例初始化head,只需使用:

node_t* head = NULL;

最新更新