Eam*_*voy 13 c++ pointers delete-operator
我有一个char**,基本上是一个字符串数组,我需要删除.这样做的正确方法是什么,以确保所有指针都被清除?
Oli*_*rth 21
经验法则是,你需要一个delete(或delete[]每个)new(或者new[]你发出).
所以,如果你这样做:
char **pp = new char*[N];
for (i = 0; i < N; i++)
{
pp[i] = new char[L];
}
Run Code Online (Sandbox Code Playgroud)
然后你需要清理:
for (i = 0; i < N; i++)
{
delete [] pp[i];
}
delete [] pp;
Run Code Online (Sandbox Code Playgroud)
但是,应该注意的是,正如您在C++中一样,您可能应该使用std::vector<std::string>而不是raw数组char,因为它会管理自己的清理.
char** StringList ;
int nStrings ;
....
for (int i = 0 ; i < nStrings ; i++)
delete[] StringList[i] ;
delete[] StringList ;
Run Code Online (Sandbox Code Playgroud)
当然,如果你开始,它会更简单
std::vector<std::string> Stringlist ;
Run Code Online (Sandbox Code Playgroud)
那就是
StringList.clear() ;
Run Code Online (Sandbox Code Playgroud)