C语言中的alloca函数
我在修改C时遇到了alloca/free函数,它被描述为在堆栈式空间上分配存储。这和malloc/free一样吗?或者这是不一样的?谢谢。我想你的意思是C语言中的alloca函数,c,alloca,C,Alloca,我在修改C时遇到了alloca/free函数,它被描述为在堆栈式空间上分配存储。这和malloc/free一样吗?或者这是不一样的?谢谢。我想你的意思是alloca,用于在堆栈上分配内存。是的,这与堆上分配的malloc和free不同 不要试图释放使用alloca分配的内存,因为调用alloca的函数返回其调用者时,它会自动释放 使用alloca和/或C99可变长度数组可能是一件危险的事情,因为如果不小心使用这些工具,很容易使堆栈溢出。malloc,calloc和realloc函数在堆上分配空间
alloca
,用于在堆栈上分配内存。是的,这与堆上分配的malloc
和free
不同
不要试图释放使用alloca
分配的内存,因为调用alloca
的函数返回其调用者时,它会自动释放
使用
alloca
和/或C99可变长度数组可能是一件危险的事情,因为如果不小心使用这些工具,很容易使堆栈溢出。malloc
,calloc
和realloc
函数在堆上分配空间
free
函数“释放”以前由这些函数分配的空间。在旧答案中添加一些额外信息
malloc()
动态内存分配
作用域(在函数调用之间需要内存时)
但是,malloc()
增加的一项额外工作是我们必须显式地free()
分配的内存
因此,为了只使用动态内存分配功能,并避免free()
的开销,可以在程序中使用alloca()
。这是可能的,因为当使用alloca()
时,内存在堆栈上分配(如其他答案所述)。以下链接表明alloc
是一个不同的函数:我认为你是对的。我认为这是一个分配器的示例实现..你在修改K&R吗?你一定很聪明。我知道它“有点”过时了,但我不知道还有什么其他资源可以指导我完成基本知识。有什么建议吗?第三段怎么强调都不够。几乎没有安全的方法来使用alloca或VLAs。@NickA我希望Haris做到了。无论如何我都把它修好了。