我有一种玩具语言可以编译成C ++,它运行在一个2kb内存的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个字节)对于int本身的信息+ 2字节)几乎使我的所有对象大小加倍,因此一个简单的转向开启/关闭应用程序消耗1k的RAM。
我已经有了自己的对象系统,它覆盖了new / delete(avr-gcc没有实现它。)所以我想可能是自定义分配器会消耗更少的内存并加快速度,因为它将提供来自已分配的块。是否有任何实现可以在我的情况下工作?
答案 0 :(得分:2)
不要分配/返回许多小对象。我为我的对象创建数组并将索引作为参数传递并返回值。