gpt4 book ai didi

c++ - 如何强制库使用自定义 std::allocator?

转载 作者:行者123 更新时间:2023-11-30 04:32:43 25 4
gpt4 key购买 nike

我正在使用 SFML,它通过 std::vector<Uint32> 处理大部分内存和其他类似的类型。所有声明都使用默认的分配器。 SFML 库被编译成 .lib 文件,这些文件在 Visual Studio 中静态链接。 (如果需要,我拥有它的所有源代码。)

我的问题是,强制 SFML 为 STL 容器使用我的自定义小对象/线程安全分配器而不是默认分配器的最不痛苦的方法是什么?我对库本身的改动越少,当然越好!

编辑:

如果有帮助,请忘记库的实现;我可以随心所欲地重新编译它。为了这个问题,假设这是我正在使用的代码。我的目标是从本质上改变所有 STL 容器使用的默认分配器。

编辑2:

如果那根本不可能,将覆盖 new本身是一个正确的方法?我了解到默认分配器只不过是新/删除操作的糖衣。

最佳答案

好吧,最“暴力”或万无一失的方法似乎是创建一个实现 malloc/free(和 friend ?)的预加载库

这通常是堆调试器/边界检查器的操作方式。

但是,我对 SFML 分配器要求一无所知,因此如果空间非常有限,它可能无法工作。在那种情况下,我建议在需要时将数据“编码”(复制的花哨词)到自定义分配的区域

切向相关:

Eletronics Art 有一个用于游戏开发的 STL“端口”。它非常适合自定义分配器(事实上,它没有默认分配器!)。你可以看看

关于c++ - 如何强制库使用自定义 std::allocator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7459080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com