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

时间:2013-02-02 11:00:59

标签: c++ visual-studio-2010 memory-management new-operator

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

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

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

伪代码(如果存在):

Myclass *a = new Myclass();

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

2 个答案:

答案 0 :(得分:6)

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


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

答案 1 :(得分:2)

Placement new就是答案。如果你真的关注地点,那么你显然必须使用某种内存池的新版本。