发布网友 发布时间:2022-04-15 23:53
共2个回答
懂视网 时间:2022-04-16 04:15
static的变量一般存在数据段,但若初始值为0,则放在BSS节中。
static变量即静态变量,在计算机编程领域指在程序执行前系统就为之静态分配存储空间的一类变量。与之相对应的是在运行时只暂时存在的自动变量与以动态分配方式获取存储空间的一些对象,其中自动变量的存储空间在调用栈上分配与释放。
静态变量也可以用于存储常数。具体来说,静态变量可用const,constant或final等关键字标识,这时其值就会在编译时设定,并且无法在运行时改变。编译器通常将静态常量与文本一起置于目标文件的文本区域,而非常量初始化数据则置于数据区。而如若有需要,有些编译器还可选择为其开辟专用区。为防止常数变量被错误的指针写入覆盖,亦可在这块区域启用内存保护机制。
热心网友 时间:2022-04-16 01:23
而初始值非零则放在数据节中。数据节和BSS节都属于数据段。顺便说说对象的存储,可分为三类:静态存储(static storage);自动存储(automatic storage);动态分配存储(allocated or dynamic storage)。 对于自动存储则对应的是栈(stack),动态分配存储对应的是堆(heap);静态存储可分为.bss/.data/.rodata等数据段(section)。在程序执行中把初始值为零或者是未设初始值的变量放在.bss段中。对于以下的这段内容。是通过readelf来查看的。