具有地址提示的operator new(在另一个对象附近创建一个对象)

Yoc*_*mer 0 c++ memory-management visual-studio-2010 new-operator

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

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

我知道有新的操作员位置,但我想知道是否还有其他技巧.
是的,我知道如何创建自定义内存管理与新的....

伪代码(如果存在):

Myclass *a = new Myclass();

Myclass *b = AloocateNear(a,sizeof(Myclass));
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 6

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


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

  • 使用`std :: vector`不是"一个很好的技巧".毫无理由地重新发明它是一种"诡计".为什么你认为你的方式"更有效率"? (2认同)
  • 不幸的是,在这种情况下你不能使用`std :: vector`来销毁单个对象,而不会破坏整个向量. (2认同)