加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

指针指针c char初始化

发布时间:2020-12-16 10:17:35 所属栏目:百科 来源:网络整理
导读:我怀疑在C中初始化这个: char** A_Function(){ char** charList = new char*[2]; charList[0] = "abcde"; charList[1] = "fghij"; return charList;} 编译此代码时没有问题,但我不确定该行为. 1 – char列表:char *在堆上好吗? 2 – charList [n_position
我怀疑在C中初始化这个:

char** A_Function()
{
    char** charList = new char*[2];
    charList[0] = "abcde";
    charList[1] = "fghij";
    return charList;
}

编译此代码时没有问题,但我不确定该行为.

1 – char列表:char *在堆上好吗?
2 – charList [n_position]在堆或堆栈上?

我不明白char * [2]真正意味着什么,是不是意味着:
它是一个静态数组,它的每个元素都有一个指向char的指针?

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

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

解决方法

也许一张照片会有所帮助:

当您从A_Function返回时,charList被销毁,但其他两个保持不变.因为你从A_Function返回charList的值没有问题 – 你只需要在不同的变量中保存相同的值,至少假设你实际使用了A_Function的返回值(即,将它分配给某个东西) ).

如果你没有保留这个值,你就会有内存泄漏 – 你将不再拥有指向你在免费商店中分配的两个指针数组的指针,因此你将无法释放它们.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读