gpt4 book ai didi

我可以在不使用堆的情况下编写 C 应用程序吗?

转载 作者:太空狗 更新时间:2023-10-29 16:45:31 26 4
gpt4 key购买 nike

我在嵌入式环境中遇到了堆栈/堆冲突(有关一些背景信息,请参阅 this question)。

我想尝试重写代码,使其不在堆上分配内存。

我可以在 C 中不使用堆来编写应用程序吗?例如,只有当我需要动态分配内存时,我将如何使用堆栈?

最佳答案

我曾在嵌入式环境中做过一次,当时我们正在为生物医学机器编写“ super 安全”代码。Malloc()s 被明确禁止,部分原因是资源限制和您可以从动态内存中获得的意外行为(寻找 malloc()、VxWorks/Tornado 和碎片,您将有一个很好的例子)。

无论如何,解决方案是提前计划所需的资源,并在包含在单独模块中的 vector 中静态分配“动态”资源,让某种特殊用途的分配器提供和收回指针。这种方法完全避免了碎片问题,并有助于在资源耗尽时获得更细粒度的错误信息。

这在大铁上听起来可能很愚蠢,但在嵌入式系统上,尤其是在安全关键系统上,最好事先很好地了解需要哪些时间和空间资源,即使只是为了调整大小硬件。

关于我可以在不使用堆的情况下编写 C 应用程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1026730/

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