gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:22:48 24 4
gpt4 key购买 nike

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

它们是否需要不同于 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];
}

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

关于c - 在 C 中使用堆栈(不是堆)动态分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31584641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com