vs2019分配malloc空间时为什么分了一块空的?

问题遇到的现象和发生背景

给指针分配空间,直接报错是空指针,但是前面检查过应该没有问题

img

需要先实例化 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)

要么内存不足,要么越界了,后者可能性比较大
说白了就是写冒了,超出这部分正好写在即将分配的内存上,导致失败

退出重新登,可能是电脑卡住了,导致系统内存不够