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->next
和head->data
将在调试模式下为0xCDCDCDCD,并且在发行版构建中未定义的数据。
而不是使用节点的非初始化实例初始化head
,只需使用:
node_t* head = NULL;