размещение на c новое как построить объект

#c #stl #new-operator

Вопрос:

Когда я читаю код для tinystl, я нахожу следующий код

 struct placeholder{};
void* operator new(size_t, placeholder, void *ptr)
{
    return ptr;
}
 

Зачем ему нужен заполнитель? В чем разница между приведенным выше и приведенным ниже кодом?

 void *operator new(size_t, void *ptr)
{
    return ptr;
}
 

Комментарии:

1. Разница заключается именно в наличии placeholder , которое необходимо, чтобы отличить это operator new от другого.

Ответ №1:

Смотрите эту страницу: https://en.cppreference.com/w/cpp/memory/new/operator_new

Это выравнивание.

Комментарии:

1. Пожалуйста, не публикуйте ответы только по ссылкам, добавьте краткое описание связанного контента.