Согласно https://isocpp.org/wiki/faq/dtors#placement-new адрес, переданный в place-new, должен быть правильно выровнен. Но пример, который он дает, кажется, противоречит этому.
char memory[sizeof(Fred)];
Этот буфер, скорее всего, не выровнен для Fred, так как он немой char[], поэтому memory может указывать на почти везде. Затем он размещает новые по этому адресу.
Является ли пример противоречащим требованию выравнивания, указанному в сноске DANGER?
Это приводит к связанному с ним вопросу:
Как создать буфер (стек или кучу) выровненный для типа T (для использования в новом месте размещения одного или нескольких объектов T)?
В буфере я имею в виду буфер char[] или void* некоторого размера, а не T[], потому что это будет распределение объектов, которое впоследствии побеждает точку после размещения. new.
Спасибо.