1、堆(heap):程序员控制(分配释放,若否:操作系统释放),不连续内存
2、栈(stack):函数参数、局部变量,编译器控制(分配释放),连续内存
3、全局(静态)区:全局、静态变量
4、常量区:常量字符串...
5、代码区:函数体的二进制代码(函数只占一块内存)
6、寄存器:栈顶指针、指令指针
函数调用压栈:下行(返回)地址,参数(右-左),局部变量 依次进栈
new:创建堆(对象)
delete:堆,调用析构函数,再删除(对象)
内存泄露:内存地址丢失
(1)堆对象--栈对象((自动)作用域返回:析构\删除)
(2)栈对象
(3)全局/静态对象
(4)寄存器对象
编译阶段:栈、全局、静态对象分配内存
运行阶段:堆对象分配内存