Heap:
寄存器只能存放少量的数据,大多数的时候,CPU要指挥寄存器,直接跟内存交换数据。
程序运行的时候,操作系统会给它分配一段内存,用来存数和运行产生的数据。着端内存有起始地址和结束地址,
比如从0x1000到0x8000。
程序运行过程中,对于动态的内存占用请求(比如新建对象,或者使用malloc命令),系统就会从预先分配好的那段内存之中,划出一部分给用户,具体规则是从起始地址开始划分。比如用户要求得到10个字节内存,那么从起始地址0x1000开始给他分配,一直分配到地址0x100A。
这种因为用户主动请求而划分出来的内存区域,叫做Heap(堆)。它由起始地址开始,从低位地址向高位地址增长。
Heap的一个重要特点就是不会自动消失,必须手动释放,或者有垃圾回收机制来回收。
Stack:
除了 Heap 以外,其他的内存占用叫做 Stack(栈)。简单说,Stack 是由于函数运行而临时占用的内存区域。