我有一个动态分配的char**
数组作为我的一个类中的私有成员。
第一次分配根据单词数量
进行client_interests = new char* [n];
稍后,根据单词+ 1
的长度分配数组的每个索引char[i] = new char [strlen(word)+1];
这是解除此成员内存的正确方法(dtor调用此函数的类)吗?
void Client::deallocate()
{
int i;
for (i = 0; i < n; i ++) //loops through each word
{
delete [] client_interests[i]; //each word is an array of characters, hence delete [] is used
}
delete [] client_interests; //deallocating the pointer
client_interests = NULL;
}
Thaks!
答案 0 :(得分:2)
是的,如果你绝对不能使用std::vector<std::string>
,那么你解除分配的方式是正确的。
答案 1 :(得分:2)
您的代码是正确的。由于您使用new []
进行分配,因此需要使用delete []
取消分配。此外,显然需要以相反的顺序取消分配 - 首先是内部数组,然后是外部数组。
答案 2 :(得分:1)
是的,这是解除分配2d阵列的正确方法。
delete []
用于解除分配数组,并且在首先释放内部数组而不是外部数组时正确执行此操作。