首页 > 试题广场 >

函数void foo(){static int&nbs...

[不定项选择题]
函数
void foo() {
    static int val;
    ……
}
 变量val的内存地址位于()
  • 未初始化数据段
  • 已初始化数据段
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由os回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后有系统释放。
4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放。
5、程序代码区—存放函数体的二进制代码。
编辑于 2020-08-25 16:04:24 回复(3)
单选题给个多选题标签?
发表于 2023-08-04 08:57:04 回复(0)
静态变量和全局变量统一储存在一块空间中,其中已经定义的一块,未定义的一块,由系统自动释放

发表于 2020-06-20 19:55:45 回复(0)
发表于 2021-03-16 11:03:45 回复(0)
<p>静态变量初始值不是为0吗?不明白此题想考察什么内容</p>
发表于 2020-08-29 16:20:22 回复(1)
这题出的有病 初始化与否这题能看出来吗?
发表于 2021-01-20 19:06:21 回复(0)
程序段 作用
bss(block started by symbol) 通常是指用来存放程序中未初始化的全局变量的一块内存区域
data(data segment) 通常是指用来存放程序中已初始化的全局变量的一块内存区域
text(code segment/text segment) 通常是指用来存放程序执行代码的一块内存区域
heap 堆是用于存放进程运行中被动态分配的内存段,大小并不固定,可以动态扩张
stack 用户存放程序临时创建的局部变量, 函数调用时,参数也会被压入调用栈中

编辑于 2021-04-08 10:44:56 回复(0)

C++程序在执行时,将内存大方向划分为4个区域

  • 代码区:存放函数体的二进制代码,由操作系统进行管理的
  • 全局区:存放全局变量和静态变量以及常量
  • 栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等
  • 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收
发表于 2021-04-10 20:02:20 回复(0)
多选题?
发表于 2023-08-13 11:37:31 回复(0)
初始化的全局变量和静态变量存放在 data段(全局初始化区)  未初始化的全局变量和未初始化的静态变量存放在bss段(全局未初始化区),其中BSS段的特点是:在程序执行之前BSS段会自动清0,所以未初始化的全局变量和静态比那辆在程序执行之前就已经变成0,但是并不是存放在初始化段,是因为存放在未初始化段才初始化为0的。
发表于 2022-06-23 16:40:02 回复(0)

.text

        主要存放代码。

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

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

        

    .data   

        数据段

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

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

        

    .bss

        数据段

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

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

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

    

    .rodata

        只读数据段

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

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

        

    栈空间(stack):

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

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

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

        

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

        

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

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

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

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

 

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

发表于 2023-09-18 12:40:45 回复(0)
变量初始化: 变量初始化是指在变量声明时为其赋予一个初始值。 未初始化变量: 未初始化变量是指在声明时没有为其赋予初始值的变量。
编辑于 2024-03-12 22:45:27 回复(0)
这能看出有没有初始化吗,我在后面定义一个函数初始化行不行
编辑于 2023-12-26 09:51:14 回复(0)
本来选了A,看着是多选再选了个B。。。。
发表于 2023-12-20 22:37:28 回复(0)
多选题?这么搞是吧
发表于 2023-11-03 14:59:12 回复(0)
在C和C++中,未初始化的全局变量和静态变量(包括静态局部变量)的地址通常存放在未初始化数据段(也称为 BSS 段,Block Started by Symbol)。BSS段用于存储程序中静态分配的、未经初始化的变量。 在编译时,BSS段中的变量不占据实际的磁盘空间,它们只是在程序加载到内存时由操作系统初始化为零或空值。这包括: 1. **全局变量**:在函数外部定义的变量,如果未显式初始化,它们将存放在BSS段。 2. **静态变量**:使用 `static` 关键字声明的变量(包括静态局部变量),如果未显式初始化,也会存放在BSS段。 相对地,已初始化的全局和静态变量会存放在数据段(Data Segment),而局部变量则通常存放在栈(Stack)中。
发表于 2023-10-26 10:52:08 回复(0)