C++面试常见问题——14内存管理

内存管理

内存管理由三种方式:

  1. 自动存储
  2. 静态存储
  3. 动态存储

自动存储

对于函数的形参、函数内部变量、和结构体变量等,编译器在函数运行过程中在栈中自动对其分配内存,调用结束后对其进行销毁。变量的声明周期只存在于当前代码块,这使得程序员可以在不同函数内使用相同的变量名。

c++对栈存储区的使用可以有效地减少程序所用的内存空间。

int add(int a,int b){
	if(a > 0 && b > 0){
		int result = a +b;			//result的生命周期只存在于if语句内 
	}
	//return result;		 		此时result已经被销毁,无法再使用 
}

静态存储

每个程序对应着一个静态存储区(全局数据区),编译器会对某些程序实体预分配存储地址和内存空间,程序一开始执行这些变量就会被创建,直到整个程序结束才会被释放。

extern用于声明全局变量,分为定义性声明和引用性声明:

extern int GlobalInt = 3;	//全局变量需要在声明时初始化,为手动初始化时编译器会自动将其初始化为0
							//这就是定义性声明
void fun{
    extern double GlobalDouble;		//引用性声明,必须有已声明的全局变量GlobalDouble
    ...   
}

动态存储

人为的开辟空间与释放空间,都由人手动设定(千万别忘了释放!!!)

posted @ 2020-02-24 20:06  MenciusYue  阅读(578)  评论(0)    收藏  举报