Код: Выделить всё
template
T* AlignedAllocator::allocate(std::size_t size) const {
void* ptr = _aligned_malloc(size, alignment_);
return static_cast(ptr);
}
, которые являются неоперативным, но доступа к листовому ptr в качестве массива t [] (и построение t в нем), будет считаться неопределенным поведением иначе.
в соответствии с ним). https://www.cppreference.com/w/cpp/lang ... t_creation, некоторые функции необработанной памяти (например, std :: malloc и std :: aligned_alloc ) неявно выполняют этот t [] , но не обязательно _aligned_malloc . /> Также я использую C ++ 17, так что у меня нет доступа к std :: start_lifetime_as_array .
является правильным ассигнованием для реализации (с C ++ на MSVC), или есть еще один шаг, чтобы явно отмечать ptr как содержащий t [] , может быть, функция MSC.>
Подробнее здесь: https://stackoverflow.com/questions/796 ... t-creation