c++ 替换默认的STL分配器

我有一个大的(> 250个文件)库的源代码,大量使用STL容器和字符串.我需要在有限堆的嵌入式环境中运行它,所以我想确保这个库本身的堆使用受到限制.

明显的解决方案是创建一个分配器,但是修改整个代码库以包含allocator模板参数是最后的一个重要工作,如果我想要获取新版本的源,这是不可取的.全局替换新的和删除是不可行的,因为它影响整个图像,而不仅仅是这个库.

我的下一个想法是一个愚蠢的C宏观技巧,但这似乎并不可能,尽管我承认不是一个聪明的宏观作者.

所以我认为“有编译器或pragma开关在编译时指定分配器类”?但我什么都没有开放

如果有任何人想出一个解决方案,下一个问题是如何在包含该库的文件集中执行新的/删除操作.

我使用gcc 3.4.4工具链在Cygwin下运行,目标是VxWorks,如果这有任何想法.

您可以从使用EASTL(企业艺术STL(部分)实施)中获益

EASTL — Electronic Arts Standard Template Library

这是为了嵌入式/游戏开发,在global heap is really scarce, non-existent or problematic in general的环境中.

EASTL的分配模型灵感来自(或类似于)着名的Towards a Better Allocator Model出版物(PDF)中的想法.

EASTL适用于自定义分配器.事实上,它并没有配置一个分配器,所以提供(一个最小的)需要甚至让你的应用程序链接.

这是EASTL的github回购:https://github.com/paulhodge/EASTL

翻译自:https://stackoverflow.com/questions/8247552/replace-default-stl-allocator

转载注明原文:c++ 替换默认的STL分配器