可以删除空指针,但是不能释放同一内存空间多次。
如果指针指向NULL(或nullptr),可以delete多次(delete时会判断,为nullptr会跳过)。
int* p = nullptr;
delete p; // 可以,delete会判空
int* q = new int(5);
delete q; // 此时q并不指向nullptr或NULL,而是内存中的一个区域的首地址
// delete q; // 会出错,不能对同一内存区域释放两次(编译器不会提醒,运行时会出错)
// 正确做法,delete后指向空(对指向nullptr的指针释放多次是可以的)
delete p;
p = nullptr;