c语言字符数组如何释放消毁?

c语言字符数组定义后如何才能释放其占用的内存,如:charstr[]="Helloworld!";我知道可以使用:free(str);但执行之后没有任何变化;又不支持:s... c语言字符数组定义后如何才能释放其占用的内存,
如:char str[] = "Hello world!";
我知道可以使用:free(str);
但执行之后没有任何变化;
又不支持:str = NULL; 语句;
如何才能释放消毁呢?
如果在之后还想用这个变量名称,如何才能重新定义呢?
我想问的是字符数组变量,不是字符指针变量,3Q!
展开
 我来答
jzhangchaochun
2010-10-23 · 超过33用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:0
展开全部
你提问中定义方式是在函数完成前释放不了的,你定义的字符数组,放在stack空间,不能用free()试图释放堆中的内容,因为那里是一段程序运行的保证。

只有使用malloc()在栈空间开辟的动态内存才能被释放!

如果你后面的代码想继续用这个数组名的话,这个数组还是可以重新赋值。你可以把你用到的数据独到这个变量中就行了!

你定义的anto数组在函数完成后,系统自己就回收了!
投机士
2015-10-17 · TA获得超过10.5万个赞
知道大有可为答主
回答量:2.5万
采纳率:0%
帮助的人:3992万
展开全部

C没有提供由语句来释放已静态定义的数组的措施。有以下几种情况:

  1. 定义在函数中的自动存储型数组,在函数被调用时创建,函数退出后自动释放;

  2. 定义在主函数中或所有函数之外的全局数组与程序的寿命一样长,不能中途释放;

  3. 用static修饰的静态数组,无论在何处定义,与程序的寿命一样长,不能中途释放;

  4. malloc函数申请的空间构成的数组,完成任务后可随时用free函数释放全部空间。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9cbba519c3
2010-10-23 · TA获得超过768个赞
知道小有建树答主
回答量:200
采纳率:0%
帮助的人:179万
展开全部
只有用malloc开辟的空间才可以被释放,申请的数组是被放在了堆栈空间内,是不能不被释放掉的,程序结束后自动被系统收回!

c编程高手团队正在招新,有意者速速行动,一起学习,一起努力!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
记谷问0
2010-10-23
知道答主
回答量:6
采纳率:0%
帮助的人:3.8万
展开全部
用malloc申请了的再用free释放!可以做个测试看释放是否成功!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式