可以删除空指针,但是不能释放同一内存空间多次。
如果指针指向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;
