玩具语言的自定义分配器
Custom Allocator for a Toy Language
我有一种玩具语言可以编译成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没有实现它。)所以我认为自定义分配器可能会消耗更少的内存,并加快速度,因为它将服务于来自已经分配的块的请求。有什么实现可以在我的情况下工作吗?
只是不要分配/返回很多小对象。我会为我的对象创建数组,并将索引作为参数和返回值传递。
相关文章:
- C++17 - 使用自定义分配器的节点提取/重新插入 - 适用于 clang++/libc++,但不适用于 libstd
- C++自定义分配器大小参数作为模板参数会引发编译器错误
- C++17 和更新的 std::分配器是否适用于动态数量的自定义堆?
- c++ 中的自定义分配器,用于不调用secure_string实现
- 我可以对 std::array 使用自定义分配器来获取安全加密密钥吗?
- shared_ptr的删除程序是否存储在自定义分配器分配的内存中?
- 自定义分配器,包括放置新案例
- C++ MSVC 中的自定义 STL 分配器错误?
- 对 std::regex_match 使用自定义分配器
- 为什么我的代码不适用于自定义分配器?
- 为什么这个自定义分配器的析构函数在 GCC/MSVS 的 stdlib 中被调用两次
- std::cout 如果从自定义分配器 (Visual Studio 2019) 调用,则不会输出
- 通过自定义分配器和删除器有效使用shared_ptr
- 如何将带有自定义分配器的 std::vector 传递给期望带有 std::分配器的函数?
- 自定义分配器兼容性
- 使用自定义分配器及其替代项重载基本类型
- 如何在自定义容器中正确使用标准::分配器?
- C 中STL地图的自定义分配器
- 带有 clang++ v4 和 gcc 6.3 库的自定义分配器
- 不调用带有 std::vector 的自定义分配器