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的返回值(即,将它分配给某个东西) ).
如果你没有保留这个值,你就会有内存泄漏 – 你将不再拥有指向你在免费商店中分配的两个指针数组的指针,因此你将无法释放它们.
总结以上是内存溢出为你收集整理的指针指针c char初始化全部内容,希望文章能够帮你解决指针指针c char初始化所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)