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

一. 自动存储(栈存储)

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

class A{......}
A a();
A b=a;
int 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回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表