带有地址提示的运算符 new(在另一个对象附近创建一个对象)
Operator new with address hint (create an object near another object)
我想创建很多相同类型的对象,我希望它们在内存中相对接近以避免页面遗漏。
有没有办法告诉操作系统(Windows平台)将内存分配得尽可能靠近给定地址?(地址提示)
某些功能隐藏在MSDN深处?
我知道有新的运算符放置,但我试图找出是否有任何其他技巧。
是的,我知道如何使用放置新项创建自定义内存管理....
伪代码(如果存在):
Myclass *a = new Myclass();
Myclass *b = AloocateNear(a,sizeof(Myclass));
使用 std::vector
.索引 X 和 X+1 中的项目保证彼此相邻。
如评论中所述(感谢sheu),此解决方案很难破坏单个对象。
放置新是答案。 如果你真的关心局部性,那么你显然将不得不使用带有某种内存池的放置新。
相关文章:
- C++ 如何在将新对象分配给另一个对象时创建新对象
- 如何创建一个对象创建函数,该函数将由与其关联的名称调用?
- 在 C++ 中为 C 样式对象创建一个透明包装类
- 编译问题 C++ 同时,尝试通过调用另一个对象中的成员函数来创建 std:: 线程
- 在另一个对象 B 中创建对象 A 时,对象 A 是否是对象 B 的本地对象,对象 A 是否会存在于对象 B 的实例化之外?
- 我如何仅一次或一次创建一个对象
- 无法将类对象创建为另一个类的成员
- 为什么我们需要在堆中创建一个对象
- 我是否要创建一个对象来使用C 中的类方法
- 在类中创建指针到另一个对象
- 在C 中,您可以创建一个对象作为arg function
- 在矢量内创建一个对象,该对象由另一个对象包含
- 在c++中有条件地创建一个对象
- Qt C++根据组合框中的选择创建一个对象
- 将向量从另一个对象添加到创建对象的对象
- 如果对象尚未在集合中,则创建一个对象
- 使用另一个(现有)对象创建新对象时会发生什么情况?
- 在一个线程中创建一个对象,并使用std :: Atomic访问另一个对象
- 仅为一个对象创建类
- 在C++中,我如何创建一个数组,数组中大小为10的每个元素都指向一个对象