鱼C论坛

 找回密码
 立即注册
查看: 1696|回复: 4

[已解决]字符串如何释放

[复制链接]
发表于 2020-2-23 13:44:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
假如我将一个字符指针初始化为指向一个字符串,
然后我又将他指向一个新的字符串, 原来那个字符串会自动释放吗?(我猜不会, 因为C语言没有垃圾回收机制)

假如不会, 又该怎么释放呢?
#include<stdio.h>

int main()
{
    char *str = "旧字符串";
    printf("原来str = %s", str);

    str = "新字符串";
    printf("\n现在str = %s\n\n", str);
    //"旧字符串"释放了吗?

    return 0;
}
最佳答案
2020-2-23 14:47:25
ZXU 发表于 2020-2-23 14:36
也就是说函数运行期间字符串不会释放吗 怎么手动释放呢

这个字符串会在整个程序运行期间都存在,没办法手动释放
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-23 14:31:29 | 显示全部楼层
会的。系统分配的内存在函数退出时自动释放。手动malloc的内存需要手动free
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-23 14:36:50 | 显示全部楼层
alexw_h264 发表于 2020-2-23 14:31
会的。系统分配的内存在函数退出时自动释放。手动malloc的内存需要手动free

也就是说函数运行期间字符串不会释放吗 怎么手动释放呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-23 14:47:25 | 显示全部楼层    本楼为最佳答案   
ZXU 发表于 2020-2-23 14:36
也就是说函数运行期间字符串不会释放吗 怎么手动释放呢

这个字符串会在整个程序运行期间都存在,没办法手动释放
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-23 16:38:55 | 显示全部楼层
举例:

手动申请: str = (char *)malloc(10*sizeof(char));
手动释放:free(str)

严格的做法,还需要判断str是否有效
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 02:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表