给指针分配空间,直接报错是空指针,但是前面检查过应该没有问题
需要先实例化 new 后,在赋值使用。
你那个检查只是打印内存不足,没有返回。应该是
PtrToAdjNode NewNode0 = (PtrToAdjNode)malloc(sizeof(struct AdjNode));
PtrToAdjNode NewNode1 = (PtrToAdjNode)malloc(sizeof(struct AdjNode));
if (NewNode0 == NULL || NewNode1 == NULL) {
printf("内存不足\n");
free(NewNode0); // 释放内存以防内存泄漏,可以是NULL指针
free(NewNode1);
return;
}
// ...
如果你是C++, 空指针使用nullptr
而不是NULL
, 在C++中, 好像是
#define NULL (0)
要么内存不足,要么越界了,后者可能性比较大
说白了就是写冒了,超出这部分正好写在即将分配的内存上,导致失败
退出重新登,可能是电脑卡住了,导致系统内存不够