C 语言中的 alloca 函数



我正在修改C,并遇到了alloca/free函数,它被描述为在像空间这样的堆栈上分配存储。这与 malloc/free 相同吗?或者这是不同的东西?谢谢。

我想你的意思是alloca用于在堆栈上分配内存。是的,这与在堆上分配的mallocfree不同。

不要尝试释放分配了alloca的内存,因为当调用alloca的函数返回到其调用方时,它会自动释放。

使用 alloca 和/或 C99 可变长度数组可能是一项有风险的业务,因为如果您不谨慎使用这些工具,您很容易使堆栈溢出。

malloccallocrealloc函数在堆上分配空间。

free函数"释放"以前由这些函数分配的空间。

在旧答案中添加一些额外的信息。

malloc()可以使用的原因很少,其中一些是

  1. 动态内存分配
  2. 作用域(当需要保留在函数调用之间的内存时(

但是,随malloc()添加的一项额外工作是我们必须显式free()分配的内存。

因此,为了仅使用动态内存分配功能,并避免free()开销,可以在他们的程序中使用alloca()。这是可能的,因为在使用内存时会在堆栈上分配内存(如其他答案所述(,alloca()

相关内容

  • 没有找到相关文章