2

我遇到了一个已分配但未初始化的问题。

这是代码的一部分:

void test2(vector<string> names, int num) // just for test
{
    const char  **tmp = new const char *[num]; // issue happends here.
    for(int i = 0; i < num; i ++)
        tmp[i] = names[i].c_str(); // is it not inialization???
    //call another function using tmp
    delete []tmp; 
}

在代码的第 3 行,我遇到了一个问题:分配:“tmp”=“new char const *[num]”,它已分配但未初始化。

我相信我对二维数组分配和初始化感到困惑。我认为tmp是const char *数组,我只想将vertor转换为const char **;

那么在代码中,这里使用new和delete对吗?

我知道如果二维数组是 int* ,那么如果我想给它赋值,我需要 new int [num],然后对 new int[] 做一个 for 循环;但是我的情况怎么样?

有人可以帮我处理这段代码吗?

4

1 回答 1

1

在这种情况下不要使用 const ,因为您是在初始化后分配数据。

于 2013-05-13T20:14:00.447 回答