我想创建很多相同类型的对象,我希望它们在内存中相对接近以避免页面未命中。
有没有办法告诉操作系统(Windows平台)尽可能靠近给定地址分配内存? (地址提示)
有些功能隐藏在MSDN深处?
我知道有新的操作员位置,但我试图找出是否还有其他技巧 是的,我知道如何使用新的....创建自定义内存管理。
伪代码(如果存在):
Myclass *a = new Myclass();
Myclass *b = AloocateNear(a,sizeof(Myclass));
答案 0 :(得分:6)
使用std::vector
。索引X和X + 1的项目保证彼此相邻。
正如评论中所述(感谢sheu),此解决方案使得很难破坏单个对象。
答案 1 :(得分:2)
Placement new就是答案。如果你真的关注地点,那么你显然必须使用某种内存池的新版本。