可以删除空指针,但是不能释放同一内存空间多次。
    如果指针指向NULL(或nullptr),可以delete多次(delete时会判断,为nullptr会跳过)。

    1. int* p = nullptr;
    2. delete p; // 可以,delete会判空
    3. int* q = new int(5);
    4. delete q; // 此时q并不指向nullptr或NULL,而是内存中的一个区域的首地址
    5. // delete q; // 会出错,不能对同一内存区域释放两次(编译器不会提醒,运行时会出错)
    6. // 正确做法,delete后指向空(对指向nullptr的指针释放多次是可以的)
    7. delete p;
    8. p = nullptr;