c++ static变量存储在哪

c++
577
2024/11/30 18:22:44
栏目: 云计算
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在C++中,static变量的存储位置取决于它们是在函数内部还是外部定义的。

  1. 如果static变量在函数内部定义,则它存储在程序的静态存储区(或称为全局数据区)。这个存储区域在程序启动时分配内存,并在程序结束时释放内存。静态存储区的内存地址在整个程序运行期间是唯一的,因此不同函数中的同名static变量将引用同一块内存。
void func() {
    static int x = 0; // x存储在静态存储区
}
  1. 如果static变量在函数外部定义,则它存储在全局数据区。与函数内部的static变量类似,全局数据区的内存地址在整个程序运行期间是唯一的。
int x = 0; // x存储在全局数据区

void func() {
    // ...
}

需要注意的是,static变量在程序的生命周期内只初始化一次。如果需要在函数内部修改全局变量或静态变量的值,只需在函数内部声明该变量即可,无需使用关键字static。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: assert c++ 如何避免误用