В зависимости от того, что вы хотите сделать, вы, вероятно, захотите использовать комбинацию следующих инструментов:
Размещение нового : Вы можете создавать объекты в определенных местах памяти, используяследующий синтаксис:
new (reinterpret_cast<void*>(0x500)) MyObject(/* ...ctor args... */);
Это не выделяет никакой новой памяти;вместо этого он просто вызывает конструктор, используя указанный адрес памяти в качестве объекта-получателя.Будьте осторожны с ограничениями выравнивания!
Пользовательские распределители. Вы можете определить новый класс по линиям std::allocator<T>
, который резервирует память в указанных вами местах.Затем вы можете создавать контейнеры STL, которые автоматически используют память в нужных вам местах.