基于堆栈的动态内存分配 - 值得吗?

问题描述 投票:0回答:1

我想出了一种使用堆栈 RAM 而不是堆来进行动态内存分配的方法。 仍然有同样的警告,完成后忘记释放内存。

我通常使用 RAM 有限的嵌入式系统。 堆是为蓝牙之类的东西保留的,而不是供应用软件使用。

问题是,在任何使用情况下,在堆栈上分配与在堆上分配是否有任何优势? 这看起来是一个可爱的技巧,但它解决了什么问题才使它有价值呢? 您仍然需要 RAM 来分配,因此没有真正的节省。

到目前为止,还没有编写任何代码来实现此功能。 我首先需要理由。

memory-management heap-memory stack-memory
1个回答
0
投票

使用基于堆栈的分配,CPU 开销和 RAM 开销最小。

基于堆的分配:

  • 分配和释放有额外的CPU开销;例如用于管理“免费”列表。
  • 有额外的 RAM 开销;例如由于堆节点头、空闲列表等原因。
  • 由于堆碎片,基于堆的分配可能会使用更多 RAM。
  • 等等。

值得使用基于堆栈的分配吗?

我们不能告诉你。 这取决于您的应用程序及其要求。 例如,如果应用程序的 CPU 和 RAM 使用率已经可以接受,那么就不值得花费“精力”来优化应用程序以使用基于堆栈的分配。 (可能会有更好的事情可以花费您宝贵的时间......尽管这是一个意见问题。) 还有一个问题是基于堆栈的分配是否适用于您的应用程序的内存使用模式。 这也取决于应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.