你特叔

GitHub: https://github.com/Hunter1023

在Linux 系统中,在运行一个程序时,程序中未初始化的全局变量会被加载到以下哪个内存段中?

在Linux 系统中,在运行一个程序时,程序中未初始化的全局变量会被加载到以下哪个内存段中?
 A. BSS
 B. TEXT
 C. DATA
 D. STACK

A选项:BSS(Block Started by Symbol)
  通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特点:可读写的,在程序执行之前BSS段会自动清0。所以,未初始的全局变量在程序执行之前已经成0了。

B选项:TEXT(代码段 code segment/text segment)
  通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。

C选项:DATA (数据段 data segment)
  通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。

D选项:STACK(栈)
  栈又称堆栈, 是存放程序临时创建的局部变量。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进后出特点,所以栈特别方便用来保存/恢复调用现场

HEAP(堆):
  堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)。


答案:A

阅读更多
文章标签: Linux
个人分类: Linux错题集
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

在Linux 系统中,在运行一个程序时,程序中未初始化的全局变量会被加载到以下哪个内存段中?

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭