在 C 中使用堆栈(不是堆)动态分配内存

Dynamically allocate memory using stack ( not heap ) in C

如何使用堆栈(而不是堆)动态分配内存?

他们需要与 malloc(),calloc() 不同的功能吗?使用哪个头文件?

alloca(3) 是您要查找的函数。

void test_alloca(int num)
{
    int *myarray = alloca(num * sizeof(int));

    // do not try to free(myarray) !
}

在 C99 中你也可以声明一个 variable-length array:

void test_vla(int num)
{
    int myarray[num];
}

这两个代码片段在功能上是相同的。 (一个例外是,第一个声明一个指针,而第二个声明一个数组,如果您采用 sizeof(myarray),则会导致不同的结果。)

你问题中的句子

dynamically allocate memory using stack

有点宽泛。但是,在我看来,你有两个选择,

  1. 使用alloca(),原型在<alloca.h>
  2. 使用VLAC99及以上

但请记住根本区别,通过上述过程分配的内存的生命周期将受到其范围的限制。