找回密码
 立即注册
搜索
热搜: 活动 通知
查看: 1979|回复: 1

C语言中字面量问题

[复制链接]

40

主题

39

回帖

338

积分

至尊会员

积分
338

至尊会员

发表于 2024-7-20 14:48:57 来自手机 | 显示全部楼层 |阅读模式
void test(){
char p[]="hello world!";
}
"hello world!"是一个字符串字面量,存放在常量区。

把一个字符串字面量赋值给了一个局部变量(char []型数组),该局部变量存放在栈中,

这样就有两块内容一样的内存,也就是说“char p[]="hello world!";”这条语句让“hello world!”这个字符串在内存中有两份拷贝,一份在动态分配的栈中,另一份在常量存储区。

我的困惑是如果用C开发一个程序,里面大量使用了类似char p[]="xxx...";函数结束后栈中的可以自动被释放,但是常量区中的怎么释放?如果程序是常驻内存的web服务性程序这样日积月累常量区中的字符串字面量数量也很多吧!

0

主题

6

回帖

34

积分

至尊会员

积分
34

至尊会员

发表于 2025-3-4 22:08:09 | 显示全部楼层
常量区的字符串存在于编译好的程序二进制文件中,且在程序运行时会加载到内存无法释放。但是常量区的字符串空间在编译好后就是确定的,不会存在你所说的web程序日积月累常量区的字符串变多的情况,你说的应该是动态申请的字符串会变多吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|鼠侠网 ( 吉ICP备19001332号 )

GMT+8, 2025-4-2 06:19 , Processed in 0.225873 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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