内存总共分为四大区域:
1.栈区( stack ):主要存储的是 局部变量 和 函数的形式参数,在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等。
2.堆区( heap ):主要存储的是 动态内存分配(malloc、free、calloc、realloc),一般由程序员分配释放,若程序员不释放,程序结束时可能由 操作系统 回收。分配方式类似于链表
3.数据段(静态区)( static )存放 全局变量 和 静态变量(static)。程序结束后由系统释放。
4.代码段:存放函数体(类成员函数和全局函数)的二进制代码