关于堆和栈、一级缓存和二级缓存的理解
数据结构的堆和栈
堆:先进先出的
栈:先进后出的、自顶向下
内存分布上的堆和栈
堆:也称为动态内存分配,是由我们自己在程序中分配内存和释放的,就是生存期是由我们自己决定的如malloc函数(注意避免内存泄漏)
栈:局部变量的内存,函数结束后内存自动被释放,栈内存分配运算内置于处理器的指令集中,它的运行效率一般很高,但是分配的内存容量有限。
静态存储区:全局变量、static变量;它是由编译器自动分配和释放的,即内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在,直到整个程序运行结束时才被释放。
动态储存区:堆和栈
一级缓存和二级缓存
为什么需要缓存?
cpu运行速率很快,内存的读写速度就很慢,所以就需要缓存,缓存分为一级二级三级,越往下优先级越低,成本越低,容量越大
CPU读写速率:
寄存器>一级缓存>二级缓存
栈是在一级缓存里面的,堆是属于二级缓存,所以栈的效率比堆的高