You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中语句char *s = "Hello world";的字符串存储在哪个内存段?

C语言中char *s = "Hello world";的字符串存储位置
  • "Hello world"这个字符串字面量会被存储在只读数据段(.rodata),属于程序静态存储区的一部分,和栈、堆是独立的内存区域。
  • 栈上只存放指针变量s本身——也就是一个指向只读数据段中字符串首地址的内存地址值。
  • 注意:只读数据段的内容是不可修改的,如果尝试通过s去修改字符串的内容,会触发未定义行为(比如程序崩溃)。
  • 堆是动态内存分配的区域(比如malloc/calloc申请的内存),这里的字符串是编译期就确定的静态常量,所以不会存在堆上。

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:55:23