printf("%s\n",array[0]);
输出是:
Hello.
如果我执行一个free(数组)会释放数组[0]指向的那个吗? (“你好.”).
我花了好几个小时试图手动释放每个元素,而我得到的只是崩溃.我希望这是一个捷径:/
解决方法 这一切都取决于数组的分配方式.我举个例子:例1:
char array[10];free(array); // nope!
例2:
char *array;array= malloc(10); // request heap for memoryfree(array); // return to Heap when no longer needed
例3:
char **array;array= malloc(10*sizeof(char *));for (int i=0; i<10; i++) { array[i]= malloc(10);}free(array); // nope. You should do:for (int i=0; i<10; i++) { free(array[i]);}free(array);
广告.示例1:数组在堆栈上分配(“自动变量”),不能免费释放.
广告.示例2:使用malloc从堆请求存储.不再需要时,使用free将其返回堆中.
广告.示例3:声明一个指向字符的指针数组.首先为数组分配存储,然后为每个数组元素分配存储以放入字符串.当不再需要时,必须首先释放字符串(使用free)然后释放数组本身(使用free).
总结以上是内存溢出为你收集整理的C – 释放指针数组是否也释放了他们所指向的内容?全部内容,希望文章能够帮你解决C – 释放指针数组是否也释放了他们所指向的内容?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)