我怀疑在 C++ 中初始化它:
char** A_Function()
{
char** charList = new char*[2];
charList[0] = "abcde";
charList[1] = "fghij";
return charList;
}
“编译这段代码”没有问题,但我不确定行为。
1 - 字符列表:char* 在堆上好吗? 2 - charList[n_position] 在堆上还是在栈上?
我不明白 char*[2] 到底是什么意思,意思是: 它是一个静态数组,每个元素都有一个指向 char 的指针?
如果它是静态的,这个数组将在堆栈上分配,所以这个数组是一个巨大的错误制造者?
如果我是对的,如何在堆上分配它?
最佳答案
也许图片会有所帮助:
当您从 A_Function
返回时,charList
被销毁,但其他两个保持不变。由于您要从 A_Function
返回 charList
的值,所以没有问题——您只需将相同的值保存在不同的变量中,至少假设您实际上使用 A_Function
的返回值(即,将其分配给某物)。
如果您不保留该值,就会发生内存泄漏——您将不再有一个指针指向您在空闲存储上分配的两个指针的数组,因此您将无法释放它们.
关于c++ - 指针的指针c++ char初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3681905/