我有一种玩具语言可以编译成C++,它在一个有2kb ram的MCU上运行(我不能访问std C++lib或boost等),为了保持统一,我所有的对象都在堆中分配。问题是avr gcc,
http://www.nongnu.org/avr-libc/user-manual/malloc.html
每个malloced对象使用两个字节的头,AFAIK意味着返回的没有状态的函数对象消耗3个字节(1个字节符合标准+2个字节的malloc信息),对于int,它消耗4个字节(2个字节的信息+2个字节用于int本身),几乎是我所有对象大小的两倍,所以一个简单的打开/关闭应用程序消耗1k的ram。
我已经有了自己的对象系统,它覆盖了new/delete(avr-gcc没有实现它。)所以我认为自定义分配器可能会消耗更少的内存,并加快速度,因为它将服务于来自已经分配的块的请求。有什么实现可以在我的情况下工作吗?
只是不要分配/返回很多小对象。我会为我的对象创建数组,并将索引作为参数和返回值传递。