我有一个使用STL容器和字符串的大型(> 250个文件)库的源代码。我需要在具有限制堆大小的嵌入式环境中运行它,因此我希望确保该库本身在堆使用方面受到限制。
显而易见的解决方案是创建一个分配器,但修改整个代码库以包括分配器模板参数是最后一步的大工程,并且如果我想要获取源代码的新版本,这种修改是不可取的。全局替换new和delete并不可行,因为那会影响整个系统图像,而不仅仅是这个库。
我的下一个想法是愚蠢的C宏技巧,但这似乎不可能,虽然我承认我不是聪明的宏作者。
所以我想,“是否有编译器或#pragma开关可以在编译时指定allocator<>类”?但我对任何解决方案都持开放态度。
如果有人能提出一个解决方案,我接下来要问的问题是如何在组成该库的文件集内部执行相同的操作,针对new/delete。
我正在使用gcc 3.4.4工具链在Cygwin下运行它,目标是VxWorks,如果这能激发任何思路。