【发布时间】:2018-12-15 15:23:44
【问题描述】:
检测到严重错误 c0000374
#pragma once
typedef struct node
{
int value;
node* next;
node* before;
} node;
void print_nodes(node* list) {
node *current = (node*)malloc(sizeof(node));
//current->value = 0;
current->next = list;
while (current->next != nullptr) {
printf("%i\n", current->next->value); <-THROW an Exception in the Fist loop
current->next = current->next->next;
}
free(current);
}
void add_node(node* list) {
}
inline void new_nodes(node* list, size_t anzahl) {
list[0].before = NULL;
for (int i = 0; i <= anzahl; i++) {
list[i].value = i + 1;
list[i].next = &list[i + 1];
list[i + 1].next = &list[i - 1];
}
list[anzahl].next = NULL;
}
printf 语句抛出异常......但只是有时。 我的 cpp 使用 size_t = 10 调用函数 new_nodes,所以它不能太大。
附加信息一次,甚至堆“损坏”。
感谢您的帮助。
【问题讨论】:
-
附加信息一次,甚至堆“坏了”
-
这个
current->next = current->next->next;太危险了,因为如果current->next->next是NULL并且下次在while()循环条件下你要检查NULL->next,它会导致崩溃。另外我不明白你为什么在print_nodes()函数中做 malloc ?add_nodes()已经创建了列表,print_nodes()只需打印它。 -
print_nodes() malloc 仅适用于当前它只为一个实例分配内存
-
"太危险了,因为如果 current->next->next 为 NULL 并且下一次在 while() 循环条件中你要检查 NULL->next" 你有什么建议跨度>
-
异常,投射
malloc,nullptr,“cpp”的结果......你确定C标签吗?也许将其更改为 C++ 标记?
标签: c pointers exception linked-list nullptr