在 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
有点宽泛。但是,在我看来,你有两个选择,
但请记住根本区别,通过上述过程分配的内存的生命周期将受到其范围的限制。
如何使用堆栈(而不是堆)动态分配内存?
他们需要与 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
有点宽泛。但是,在我看来,你有两个选择,
但请记住根本区别,通过上述过程分配的内存的生命周期将受到其范围的限制。