C++ 程序中的内存分为两个部分:
- 栈:在函数内部声明的所有变量都将占用栈内存。
- 堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。
- 栈区:由程序管理,存放局部变量,由程序自动释放掉
- 堆区:由我们自己管理,我们自己创建自己释放,当程序结束时程序会接手释放掉空间。
动态内存那显然如字面意思内存的分配是动态的
说白了就是有些变量需要的内存并不是程序编写就能确定,需要运行时候才能知道
比如
int i;
cin >>i;
int *p =new int[i];
//这里*p指向的内存大小随着用户输入的数动态变化
静态内存说白了就是不可变了在编译器就决定了内存大小
比如 常量,常变量(const),静态变量,全局变量
new 和 delete 运算符
new 与 malloc() 函数相比,其主要的优点是,new 不只是分配了内存,它还创建了对象。
int *i=NULL;
i=new int;//为变量请求内存
delete i;释放内存