跳转到内容

英文维基 | 中文维基 | 日文维基 | 草榴社区

基于堆栈的内存分配

维基百科,自由的百科全书

计算机中的堆栈电脑记忆体区域,其中以后进先出 (LIFO)方式添加或删除数据。

在大多数现代计算机系统中,每个线程都会被分配一定的内存区域,称为堆栈。当一个函数执行时,它可能会将一些数据添加到栈顶;当函数准备停止执行时,它负责从堆栈中删除该数据。线程的堆栈用于存储调用者提供的返回地址的位置,以便让返回语句返回到正确的位置。此外堆栈还会用于存储当前活动函数的固定长度变量。程序员也可以使用堆栈来存储可变长度的数据。

系统

[编辑]

许多类Unix系统以及Microsoft Windows都实现了一个名为alloca的函数,用于动态分配堆栈内存。[1][2]该函数早在UNIX/32V英语UNIX/32V(1978) 时就出现在Unix系统上,但不是ANSI C或任何可移植操作系统接口标准的一部分。

参考文献

[编辑]
  1. ^ alloca(3) – Linux程序员手册页 – 库函数(Library Functions)
  2. ^ Why is the use of alloca() not considered good practice?. stackoverflow.com. [2016-01-05]. (原始内容存档于2021-12-14).