【问题标题】:Custom Allocator for a Toy Language玩具语言的自定义分配器
【发布时间】:2011-09-04 22:34:56
【问题描述】:

我有一种玩具语言可以编译成 C++,它在具有 2 kb ram 的 MCU 上运行(我无权访问 std c++ lib 或 boost 等),为了保持统一,我所有的对象都分配在堆。问题是avr-gcc,

http://www.nongnu.org/avr-libc/user-manual/malloc.html

为每个 malloced 对象使用两个字节的标头,AFAIK 表示返回的没有状态的函数对象消耗 3 个字节(1 个字节符合标准 + 2 个字节的 malloc 信息),对于整数它消耗 4 个字节(2 个字节info + 2 字节用于 int 本身)几乎是我所有对象大小的两倍,因此一个简单的打开/关闭应用程序消耗 1k 内存。

我已经有自己的对象系统,它覆盖了 new/delete(avr-gcc 没有实现它。)所以我想自定义分配器可能会消耗更少的内存并加快速度,因为它将服务来自的请求已经分配的块。是否有任何适用于我的情况的实现?

【问题讨论】:

  • 您已经分配了一个块。通过硬件。

标签: c++ memory-management malloc new-operator


【解决方案1】:

只是不要分配/返回许多小对象。我会为我的对象创建数组并将索引作为参数和返回值传递。

【讨论】:

  • +1:基本上就是这个。您无法避免malloc/new 需要每个分配的元信息这一事实。只需预先分配整个 2kB,然后自己管理玩具语言分配。
猜你喜欢
  • 2010-12-25
  • 2016-11-09
  • 2012-05-15
  • 1970-01-01
  • 2020-11-24
  • 1970-01-01
  • 1970-01-01
  • 2020-07-07
  • 2015-04-22
相关资源
最近更新 更多