【发布时间】: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