内存分区模型:
c++在跑程序时,将内存分为4个区域:
- 代码区:存放函数体的二进制代码,由操作系统进行管理的
- 全局区:存放全局变量和静态变量以及常量
- 栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等
- 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收
1. 程序运行前:
程序编译后,会生成exe可执行程序,在未执行该程序前内存会分为两个区域:
代码区:
存放CPU执行的机器指令,代码区是共享只读的;
全局区:
存放全局和静态变量,全局区还包含常量区(字符串常量以及其他常量)
2. 程序运行后:
栈区:
由编译器自动分配释放, 存放函数的参数值,局部变量等
堆区:
由程序员分配释放,在c++中主要利用new在堆区开辟内存
3. new操作符:
用于申请在栈区的内存;
语法:new+数据类型
例:
#include <iostream>
using namespace std;
int main()
{
int i=0;
int *a=new int(10);
int *b=new int[10];//申请数组
for(i=0;i<10;i++)
{
b[i]=i;
}
cout<<*a<<endl;
for(i=0;i<10;i++)
{
cout<<b[i]<<endl;
}
return 0;
}