c++进阶十三(内存管理)

两盒软妹~` 提交于 2020-02-28 00:49:30

c++三种管理内存的方式:

一. 自动存储(栈存储)

函数的形参,函数内部声明的变量及结构体变量自动存储在栈里面
在所属函数被调用时自动产生,在函数结束时自动消亡

二. 静态存储(编译器预分配)

每个程序都分配一段静态内存空间,永久存储,在程序开始时建立,程序运行结束时销毁static extern变量。
1,extern关键字
为全局变量(外部变量),在函数和类外部定义,可以在程序任一位置进行访问
1.1 定义性声明
extern 类型 变量名 =初始化表达式
extern double a=1.11;
1.2 引用性声明
extern 类型 变量名;

#include <iostream>
using namespace std;
void change();
int main()
{
	//引用性定义extern变量
	extern int num;
	//调用一次change函数
	cout<<num<<endl;
	change(); 
	cout<<num<<endl;
}
//声明num 
int num=0;
void change()
{
	num+=3;
 } 

三. 动态存储

new 和delete,在*或者堆(heap);
malloc 和free 自由存储空间(free store)
相比于栈,堆的存取是随意的一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!