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

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

Сообщение Anonymous »

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

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

T *pobj = new(pstorage);
Тем не менее, вы должны предоставить должным образом выровненное Pstorage .
Afaiu Следующий код не дает гарантии для чрезмерных типов.

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

// properly aligned heap storage to hold N contiguous T objects
unsigned char *storage = new unsigned char[N*sizeof(T)];
< /code>
operator new
Перегрузки для перегруженного типа, кажется, нельзя явно полезно (https://stackoverflow.com/a/78679166/21691539).образной// in the spirit of std::aligned_storage
// can be on the stack or on the heap
template
struct Storage {
alignas(T) unsigned char storage[N * sizeof(T)];
}

auto *wrapped_storage = new Storage;
auto *storage = wrapped_storage.storage;
< /code>
But it works only if the number of objects is known at compile-time.
What would be the proper way to get a raw storage suitably aligned of over-aligned types?

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

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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