c++ static变量分配内存
时间: 2023-12-22 14:28:23 浏览: 98
c/c++变量在内存中的分配
在C++中,静态变量是在程序运行时分配内存的。静态变量可以在全局作用域中定义,也可以在类中定义。静态变量只会被分配一次内存,即使在多个对象中使用相同的静态变量,也只会有一个实例。静态变量的生命周期与程序的生命周期相同,即在程序结束时才会被销毁。
对于头文件中定义的静态变量,由于头文件可能会被多个源文件包含,因此会导致静态变量被多次定义,造成内存空间的浪费。因此,应该避免在头文件中定义静态变量,而是在一个源文件中定义静态变量,并在其他源文件中使用extern关键字声明该变量。
下面是一个示例代码,演示了如何在C++中定义和使用静态变量:
```c++
// static_variable.hpp
#pragma once
void TestStatic();
// static_variable.cpp
#include <iostream>
#include "static_variable.hpp"
using namespace std;
static int g_ivalue = 110;
void TestStatic()
{
static int s_ivalue = 0;
int l_ivalue = 0;
cout << "g_ivalue: " << g_ivalue << endl;
cout << "s_ivalue: " << s_ivalue << endl;
cout << "l_ivalue: " << l_ivalue << endl;
g_ivalue++;
s_ivalue++;
l_ivalue++;
}
// main.cpp
#include "static_variable.hpp"
int main()
{
TestStatic();
TestStatic();
TestStatic();
return 0;
}
```
阅读全文