首页 > 试题广场 >

未初始化的全局变量放在下面哪个段中()

[单选题]
未初始化的全局变量放在下面哪个段中()
  • text
  • data
  • variable
  • bss
text段在内存中被映射为只读;
variable:优化器在用到这个变量时必须每次都小心地重新读 取这个变量的值;
data包含静态初始化的数据,所以有初值的全局变量和static变量在data区’
bss是英文Block Started by Symbol的简称,通常是指用来存放程序中未初始化的全局变量的一块内存区域,在程序载入时由内核清0。BSS段属于静态内存分配。

发表于 2020-02-26 23:00:34 回复(0)
数据段包括初始化的数据和未初始化的数据(BSS)两部分 。BSS段存放的是未初始化的全局变量和静态变量。
发表于 2019-03-21 23:18:37 回复(0)
BSS(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特点是:可读写的,在程序执行之前BSS段会自动清0。所以,未初始的全局变量在程序执行之前已经成0了。
发表于 2019-03-17 15:52:30 回复(0)
   
 .text

        主要存放代码。

        只读并且共享,这段内存在程序运行期间(进程活动期间),不会释放的。

        "代码段" 随程序持续性(随进程持续性)

    .data   

        数据段

        主要存放程序中已经初始化的全局变量和已经初始化的static变量。 

        可读可写,这段内存在进程运行期间,一直存在。随进程持续性。

    .bss

        数据段

        主要存放程序中没有初始化的全局变量和没有初始化的static变量。

        可读可写,这段内存在进程运行期间,一直存在。随进程持续性。

        .bss段,在进程初始化时,(可能)全部会将其保存的对象初始化为0

    .rodata

        只读数据段

        主要存放程序中的只读数据(如: 常量、字符串 ==)

        只读。这段内存在程序运行期间,一直存在。随进程持续性。

    栈空间(stack):

        主要存放局部变量(非static的局部变量)

        可读可写。这段内存,会自动释放(代码块执行完了,

        代码块中的局部变量的空间会自动释放)。随代码块持续性。

        

        **** 返回一个局部变量的地址,是有问题。

    堆空间(heap): "动态内存空间"

        主要malloc/realloc/calloc动态分配的空间.

        可读可写的,这段内存在进程运行期间,一旦被分配,

        就会一直存在,直到用户手动free或进程消亡。

 

        防止"内存泄漏" 、"垃圾内存" 

发表于 2023-09-16 18:31:18 回复(0)
BSS段存放的是未初始化的全局变量和静态变量。
发表于 2022-02-28 12:31:12 回复(0)
C规定,未初始化变量的初值为0,这个清0的操作是由启动代码完成的,还有已初始化变量的初值的设置,也是由启动代码完成的。 为了启动代码的简单化,编译链接器会把已初始化的变量放在同一个段:.data,这个段的映像(包含了各个变量的初值)保存在“只读数据段”,这样启动代码就可以简单地复制这个映像到 .data 段,所有的已初始化变量就都初始化了。 而未初始化变量也放在同一个段:.bss,启动代码简单地调用 memset 就可以把所有未初始化变量都清0。
发表于 2020-04-20 23:09:38 回复(0)