本文概述
分配内存的不同方法是:
- 静态存储分配
- 堆栈存储分配
- 堆存储分配
静态存储分配
- 在静态分配中, 名称绑定到存储位置。
- 如果在编译时创建了内存, 那么该内存将在静态区域中创建, 并且只会创建一次。
- 静态分配支持动态数据结构, 这意味着内存仅在编译时创建, 并在程序完成后释放。
- 静态存储分配的缺点在于, 应在编译时知道数据对象的大小和位置。
- 另一个缺点是递归过程的限制。
堆栈存储分配
- 在静态存储分配中, 存储组织为堆栈。
- 当激活开始时, 激活记录被推入堆栈, 而在激活结束时将其弹出。
- 激活记录包含本地变量, 以便将它们绑定到每个激活记录中的最新存储中。激活结束后, 将删除locals的值。
- 它基于后进先出(LIFO)工作, 并且此分配支持递归过程。
堆存储分配
- 堆分配是最灵活的分配方案。
- 可以根据用户的要求, 随时随地进行内存的分配和释放。
- 堆分配用于动态地为变量分配内存, 当不再使用变量时, 将其收回。
- 堆存储分配支持递归过程。
例:
fact (int n)
{
if (n<=1)
return 1;
else
return (n * fact(n-1));
}
fact (6)
动态分配如下:
评论前必须登录!
注册