分区的目标是为了更好的管理,提高效率。就像一个公司一样会分很多的部门。
C++编译器将计算机内存分为代码区和数据区,很显然,代码区就是存放程序代码,而数据区则是存放程序编译和执行过程出现的变量和常量。
数据区又分为静态数据区、动态数据区以及常量区,
动态数据区包括堆区和栈区。
堆
程序员用new、malloc(memory allocation)动态内存分配,delete、free释放。
堆的空间小于等于实际的物理内存,分配速度慢。
堆代码实践
#include <iostream>
using namespace std;
int main() {
int *p = NULL;
p = (int*)malloc(10 * sizeof(int));
if (p == NULL)
{
cout << "分配失败" << endl;
}
*p = 10;
cout << *p << endl;
free(p);
return 0;
}
输出:10
栈
存放函数内的局部变量,由编译器自动分配和释放
栈的空间有限,分配速度快。
全局、静态存储区
存放全局变量和静态变量static,程序结束时释放