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%
帮助的人:3975万
展开全部

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

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

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

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

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

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

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式