Результаты поиска по запросу "placement-new"

3 ответа

Является ли это четко определенным / законным для размещения новых несколько раз по одному и тому же адресу?

(Примечание: этот вопрос был мотивирован попыткой создать хакерскую обработку препроцессора, чтобы сгенерировать неоперативное распределение, чтобы ответить на этот другой вопрос: Макрос, который принимает новый ...

1 ответ

 в любом случае, если объект не реализован в идиоме Handle-Worker.

У меня сложный класс со многими переменными. У меня есть надежный и проверенный экземпляр конструктора:Некоторые из конструкторов копирования переменных-членов, вызываемых в списке инициализаторов, выполняют распределение. Applepie::Applepie( ...

4 ответа

Ах, прости @iammilind :)

char * buf = new char[sizeof(T)]; new (buf) T; T * t = (T *)buf; //code... //here I should destruct *t but as it is argument of template and can be //instantiated via basic types as well (say int) so such code /*t->~T();*/ //is incorrect (maybe ...

ТОП публикаций

2 ответа

Оба случая в ответе выше приводят к UB. В общем, идиомы следует избегать, потому что есть так много разных способов, которые могут привести к UB.

т мой вопрос@DeadMG говорит, что реинициализация класса через [https://stackoverflow.com/questions/6036086/is-it-valid-to-directly-call-a-virtual-destructor] указатель является неопределенным поведением. Есть ли где-нибудь упоминание об этом в ...

2 ответа

, Почему они требуются в интерфейсе ускользает от меня

мог найти точный ответ на этот вопрос и, следовательно, размещать здесь. Когда я думаю о векторе, он должен строить объекты в смежной области памяти. Это означает, что вектор сохраняет выделенную память и должен выполнить конструкцию на месте (= ...

5 ответов

stackoverflow.com/questions/364483/...

тся ли следующий законный C ++ с четко определенным поведением? class my_class { ... }; int main() { char storage[sizeof(my_class)]; new ((void *)storage) my_class(); }Или это проблематично из-за соображений приведения / выравнивания указателя?

4 ответа

 5.3.5, а не 3.7.4.

рен, что этот код должен быть незаконным, так как он явно не будет работать, но, похоже, это разрешено C ++ 0x FCD.

2 ответа

размещение нового + массив + выравнивание

6 ответов

Что такое конструктор на месте в C ++? [Дубликат]

Возможный дубликат:C ++ - «новое размещение»Что такое конструктор на месте в C ++?например Тип данных * x = new (y) Тип данных ();

8 ответов

C ++, возможно ли вызвать конструктор напрямую, без нового?