目录
代码区
全局区
栈区
堆区
new操作符
不同区域存放的数据,赋予不同的生命周期,给予开发人员更大的灵活编程。
代码区
- 存放二进制代码,由操作系统管理
- 未执行程序(.exe)前已经存在
- 共享,对频繁执行的程序只需要内存中有一份代码
- 只读,防止程序意外修改
全局区
- 存放全局变量、静态变量、常量(字符串常量、const修饰的变量)
- 未执行程序(.exe)前已经存在
- 该区域的数据在程序结束后由操作系统释放
栈区
- 存放函数的参数、局部变量等
- 栈区数据由编译器自动释放,故不要返回局部变量的地址
堆区
- 由程序员分配及释放,如果不释放,程序结束时由操作系统释放(注意内存泄漏)
- 在C++中由new开辟内存
new操作符
- new操作符开辟数据,使用delete释放
- 语法:new 数据类型
- 返回:该数据对应的类型的指针
#include <iostream>using namespace std;int *func(void)
{int *p = new int(10);return p;
}int main(void)
{int *ptr = func();cout << "开辟内存的值:" << *ptr << endl;delete ptr; //释放内存
}
推荐阅读:[C++基础入门](七):结构体