我遇到了已分配但未初始化的问题。
这是代码的一部分:
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]”,已分配但未初始化。
我相信我对2-d数组分配和初始化感到困惑。我认为tmp是const char *数组,我只想将vertor转换为const char **;
然后在代码中,使用new和删除是否正确?
我知道如果2d数组是int * ,那么如果我想为它赋值,我需要新的int [num],然后执行for循环到new int [] ;但我的情况怎么样呢?
有人可以帮我解决这段代码吗?
答案 0 :(得分:1)
在这种情况下不要使用const,因为你在初始化后分配数据。