C++ выровнен новый[]C++

Программы на C++. Форум разработчиков
Anonymous
C++ выровнен новый[]

Сообщение Anonymous »

Обзор
При просмотре оператора new, оператора new[] — cppreference.com кажется, что у нас есть несколько вариантов размещения массивов объектов с конкретными требованиями к выравниванию. Однако не указано, как их использовать, и я не могу найти правильный синтаксис C++.
Могу ли я каким-то образом явно вызвать этот оператор, или компилятор будет автоматически определить перегрузку? :

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

void* operator new[]( std::size_t count, std::align_val_t al );
Глядя на блог Bartek по кодированию, кажется, что компилятор автоматически выбирает перегрузку в зависимости от того, превышает ли требование выравнивания __STDCPP_DEFAULT_NEW_ALIGNMENT__ (обычно 16 на 64). -битные машины).
Вопрос
Можно ли вручную выбрать перегрузку для нового оператор в каких случаях? Иногда мне может потребоваться, чтобы выделенный блок был выровнен определенным образом (я предполагаю, что выравнивание всегда должно быть степенью 2 и, вероятно, больше 16).
Выбор компилятора
В обозримом будущем я, вероятно, буду использовать GCC и C++ >= 17.

Подробнее здесь: https://stackoverflow.com/questions/645 ... ligned-new

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