0

我想创建很多相同类型的对象,并且我希望它们在内存中相对接近以避免页面丢失。

有没有办法告诉操作系统(Windows 平台)分配内存尽可能接近给定地址?(地址提示)
某些功能隐藏在 MSDN 深处?

我知道有新的操作员安置,但我试图找出是否有任何其他技巧。
是的,我知道如何使用新位置创建自定义内存管理......

伪代码(如果存在):

Myclass *a = new Myclass();

Myclass *b = AloocateNear(a,sizeof(Myclass));
4

2 回答 2

6

使用std::vector. 索引 X 和 X+1 处的项目保证彼此相邻。


如评论中所述(感谢 sheu),此解决方案使破坏单个对象变得困难。

于 2013-02-02T11:04:40.670 回答
2

安置新是答案。如果您真的关心局部性,那么您显然将不得不使用带有某种内存池的placement new。

于 2013-02-02T11:03:17.420 回答