内存 分配 方式有三种:
1.从静态存储区域分配 。内存 在程序编译的时候就已经分配 好,这块内存 在程序的整个运行期间都存在。例如全局变 量,static变量。
2.在栈上创建。在执行函数时,函数内局部变量的存储单元 都可以在栈上创建,函数执行结束时这些存储单元 自动被 释放。栈内存分配运算内置于处理器的指令集中,效率很 高,但是分配 的内存 容量有限。
3.从堆上分配 ,亦称动态内存 分配 。程序在运行的时候用malloc或new申请任意多少的内存 ,程 序员自己负责在何时用free或delete释放内存 。动态内存 的生存期由我们决定,使用非常灵活,但问题也最多。
一般所说的堆栈(stack)往往是指栈,先进后出, 它是一块内存区。用以存放程序的局部变量,临时变量,函数的参数,返回地址等。在这块区域中的变量的分配 和释放由系统自动进行。不需要用户的参与。
而在堆(heap,先进先出) 上的空间则是由用户进行分配 ,并由用户负责释放。