Получение кучи с правильным выравниванием в C++ для типов без перевыравниванияC++

Программы на C++. Форум разработчиков
Anonymous
Получение кучи с правильным выравниванием в C++ для типов без перевыравнивания

Сообщение Anonymous »

В некоторых случаях вам потребуется выделить хранилище перед созданием объектов внутри этого хранилища.

Затем, чтобы создать эти объекты, вам может потребоваться использовать новое размещение:

Код: Выделить всё

T *pobj = new(pstorage);
однако вам необходимо предоставить правильно выровненное хранилище pstorage.
Я не понимаю ожидаемого поведения оператора new: p>

Код: Выделить всё

// heap storage to hold N contiguous T objects, how to get proper alignment?
unsigned char *storage = new unsigned char[N*sizeof(T)];
Гарантированно ли выражение new возвращает указатель на адрес, выровненный соответствующим образом для любого «неперевыровненного» типа, но не подразумевает некоторую фрагментацию памяти (в случае последовательных вызовы new для типов со слабым выравниванием)?


Подробнее здесь: https://stackoverflow.com/questions/787 ... igned-type

Вернуться в «C++»