gpt4 book ai didi

c - 如果我想要一个全局 VLA,我可以在 main 函数中使用 alloca() 吗?

转载 作者:行者123 更新时间:2023-12-05 09:04:49 24 4
gpt4 key购买 nike

我的应用程序有一个 main 函数,我分配了例如配置文件的路径等。目前我为它们使用 malloc,但它们是永远不会释放,并且在应用程序的整个生命周期内始终可用。我什至从未释放它们,因为当应用程序终止时,操作系统已经自动回收分配的内存。在这一点上,有什么理由不使用alloca而不是malloc,因为当main返回时程序结束并且alloca内存只被删除一旦分配的函数被释放。因此,基于这个逻辑,在主函数中使用 alloca 分配的内存只会在程序结束时释放,这是需要的。这些陈述是否正确,是否有任何理由不使用 alloca(alloca is bad practice 所以当我说 alloca 意味着 alloca main) 在 main 中用于持续到程序终止的“全局 VLA”之类的对象?

最佳答案

您可以在 main 中使用 alloca/VLA,但为什么呢?

使用它们的典型原因是,如果您有一些性能敏感的部分被调用很多,并且您不希望 malloc/free 的开销。对于 main,您的数据在程序开始时分配一次,因此几次 malloc 调用的开销可以忽略不计。

不在 main 中使用 alloca/VLA 的另一个原因是它们占用堆栈空间,与堆空间相比,这是非常有限的资源。

关于c - 如果我想要一个全局 VLA,我可以在 main 函数中使用 alloca() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68159424/

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