数据段,BSS段

吖呀飞扬 2017-08-22 11:33:56

int a;//全局未初始化,BSS
int b = 0;//全局初始化为0,data还是bss?
int c = 1;//全局初始化,data
static int d;//静态全局未初始化,bss
static int e = 0;//静态全局变量初始化为0,data还是bss?
static int f = 1;//静态全局初始化,data
int main()
{
int g;//局部未初始化变量,栈,值随机
int h = 0;//局部初始化变量,栈
int i = 1;//局部初始化变量,栈
static int j;//局部未初始化静态变量,bss
static int k = 0;//局部静态变量初始化为0,data还是bss?
static int l = 1;//局部静态变量,data
char *str = "hello";//字符串常量"hello"保存在哪里,data吗?
}

后面备注都正确吗?还有对于初始化为0的变量在什么位置不确定
谢谢
...全文
10085 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdghchj 2017-08-22
  • 打赏
  • 举报
回复
静态变量、全局变量都在全局区,只是作用域不同而已。 字面常量在常量区。
吖呀飞扬 2017-08-22
  • 打赏
  • 举报
回复
引用 3 楼 cfjtaishan 的回复:
BSS段(bss segment)通常是指用来存放程序中未初始化或初始化为0的全局变量或静态变量的一块内存区域。 数据段(data segment)通常是指用来存放程序中已初始化且不为0的全局变量或静态变量的一块内存区域 未初始化的全局变量或静态变量放在BSS段, 被初始化为 0,不占用磁盘空间,加载到内存后才分配空间。 字符串常量存放在只读数据段(数据段分为只读数据段和数据段) 局部变量不论是否初始化均在栈上申请。
谢谢
自信男孩 2017-08-22
  • 打赏
  • 举报
回复
引用 3 楼 cfjtaishan 的回复:
BSS段(bss segment)通常是指用来存放程序中未初始化或初始化为0的全局变量或静态变量的一块内存区域。 数据段(data segment)通常是指用来存放程序中已初始化且不为0的全局变量或静态变量的一块内存区域 未初始化的全局变量或静态变量放在BSS段, 被初始化为 0,不占用磁盘空间,加载到内存后才分配空间。 字符串常量存放在只读数据段(数据段分为只读数据段和数据段) 局部变量不论是否初始化均在栈上申请。
以上内存划分都是Linux系统上内存的划分,Windows下会有少许区别。
自信男孩 2017-08-22
  • 打赏
  • 举报
回复
BSS段(bss segment)通常是指用来存放程序中未初始化或初始化为0的全局变量或静态变量的一块内存区域。 数据段(data segment)通常是指用来存放程序中已初始化且不为0的全局变量或静态变量的一块内存区域 未初始化的全局变量或静态变量放在BSS段, 被初始化为 0,不占用磁盘空间,加载到内存后才分配空间。 字符串常量存放在只读数据段(数据段分为只读数据段和数据段) 局部变量不论是否初始化均在栈上申请。
赵4老师 2017-08-22
  • 打赏
  • 举报
回复
理解讨论之前请先学会如何观察! 学会使用dumpbin、PEBrowser Professional、VMMap、……

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧