程序运行前:
代码区、全局区
代码区:
共享、只读
函数体内的变量都是局部变量
全局区存放全局变量、静态变量、常量常量区中存放const修饰的全局常量和字符串常量
-------------------------------------------------------------------------------------------------
程序运行后:
栈区:
由编译器自动分配释放,存放函数的参数值,局部变量等
注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放
堆区:
由程序员分配释放,若程序员不释放,程序结束时由操作系统回收
在C++中主要利用new在堆区开辟内存 ,利用delete释放堆区的数据。
// 在堆区创建整型数据, new返回的是该类型的指针
int *p = new int(10);
//利用delete释放堆区的数据
delete p;
// 在堆区利用new开辟数组:
int* arr = new int[10]; // 10代表数组有10个元素
for(int i =0;i<10;i++)
{
arr[i] = i + 100; // 给10个元素赋值
}
for(i = 0;i<10;i++)
{
cout<<arr[i]<<endl; // 输出这10个元素
}
// 释放堆区数组
// 释放数组时候,要加 [] 才可以
delete[] arr;