带有地址提示的运算符 new(在另一个对象附近创建一个对象)

Operator new with address hint (create an object near another object)

本文关键字:一个对象 创建 地址 提示 new 运算符      更新时间:2023-10-16

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

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

我知道有新的运算符放置,但我试图找出是否有任何其他技巧。
是的,我知道如何使用放置新项创建自定义内存管理....

伪代码(如果存在):

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

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


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

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