gpt4 book ai didi

c++ - 指针的指针c++ char初始化

转载 作者:太空狗 更新时间:2023-10-29 19:47:07 26 4
gpt4 key购买 nike

我怀疑在 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 的指针?

如果它是静态的,这个数组将在堆栈上分配,所以这个数组是一个巨大的错误制造者?

如果我是对的,如何在堆上分配它?

最佳答案

也许图片会有所帮助:

alt text

当您从 A_Function 返回时,charList 被销毁,但其他两个保持不变。由于您要从 A_Function 返回 charList 的值,所以没有问题——您只需将相同的值保存在不同的变量中,至少假设您实际上使用 A_Function 的返回值(即,将其分配给某物)。

如果您不保留该值,就会发生内存泄漏——您将不再有一个指针指向您在空闲存储上分配的两个指针的数组,因此您将无法释放它们.

关于c++ - 指针的指针c++ char初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3681905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com