三种不同内存分配策略比较
何时确定空间需求 | 何时分配空间 | 空间使用特性 | 具体含义解释 | 常用关键字或函数 | 举例 | |
静态 | 编译时候确定 | 编译阶段 | 固定不变 | 不允许有可变的数据结构,如可变数组,程序中含嵌套或递规 | static | 全局变量 |
栈 | 编译时候未知,进入程序时候才能确定 | 运行时候,动态分配 | 先进后出 | 进入一个程序或模块的时候,才能确定空间需求 | (auto) | 普通变量 |
堆 | 编译时候未知,进入程序时候也未知 | 动态申请堆 | 任意顺序分配或释放 | 因为不确定,所以以任意顺序申请和释放空间。 | malloc | 长度可变的字符串或对象实例 |
注:整理自Stack and Heap
转载请注明:在路上 » 三种不同内存分配策略比较