删除char **数组的正确方法

时间:2014-08-18 10:49:50

标签: c++ arrays memory-management

我有一个动态分配的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!

3 个答案:

答案 0 :(得分:2)

是的,如果你绝对不能使用std::vector<std::string>,那么你解除分配的方式是正确的。

答案 1 :(得分:2)

您的代码是正确的。由于您使用new []进行分配,因此需要使用delete []取消分配。此外,显然需要以相反的顺序取消分配 - 首先是内部数组,然后是外部数组。

答案 2 :(得分:1)

是的,这是解除分配2d阵列的正确方法。

delete []

用于解除分配数组,并且在首先释放内部数组而不是外部数组时正确执行此操作。