Создание объектов в предварительно выделенной памяти

Мы можем использовать новое размещение для создания объекта в предварительно выделенной памяти.

Давайте рассмотрим следующий пример:

char *buf  = new char[1000];   //pre-allocated buffer
string *p = new (buf) MyObject();  //placement new 
string *q = new (buf) MyObject();  //placement new

Я создал два объекта в предварительно выделенном буфере. Два объекта создаются случайным образом в буфере или в непрерывных блоках памяти? Если мы продолжаем создавать больше объектов в буфере и хотим, чтобы они хранились в непрерывных блоках памяти, что нам делать? Сначала создайте массив в буфере, а затем создайте каждый объект в слотах элементов массива?

7
задан Terry Li 28 November 2011 в 19:16
поделиться