C++关于delete的使用

1. delete安全用法:

void safe_release()
{
    void* t = m_ptr; //先赋值nullptr,再delete,可防止被在其它线程占用时,引起的错误
    m_ptr = nullptr; //方便以后检查指针是否有效,亦防止再次访问无效的指针
    delete t;        //释放内存
}

2. delete[]

void fun()
{
    int* pArr = new int[9];
    delete[] pArr;                //new[] 必须配合delete[]使用,有时使用delete了不会报错(例如delete基本类型或者结构体等的数组指针)
    
    string* pStr = new string[9];
    delete[] pStr;                //delete[]会逐个调用“对象数组”的每个对象的“析构函数”,这里用delete肯定报错(除非“这个类,没有析构函数”)
}


你可能感兴趣的:(C++)