在这种情况下,删除指针数组期间会发生什么?

What happens during delete of array of pointers in this case?

如果我用下一种方式定义数组:
char** array=new char*[3];
然后我像这样初始化数组:

for(int i=0; i<3;i++){  
array[i]=new char[5];  
}  

之后,我做了:

delete[] array;  

删除过程中会发生什么?

这会导致内存泄漏:只有 array 的内存被释放,但为单元格保留的内存在程序关闭之前不会被释放。

您应该将每个 newdelete 相匹配:

for(int i=0; i<3;i++){  
    delete[] array[i];  
}  
delete[] array;  

如果您从某个函数接收到指针,则需要知道它的大小才能释放所有内存。

为避免手动内存处理,您可以使用共享指针向量 (std::vector<std::shared_ptr<char>),或者在这种特定情况下,使用字符串 (std::vector<std::string>)。