Результаты поиска по запросу "placement-new"
Является ли это четко определенным / законным для размещения новых несколько раз по одному и тому же адресу?
(Примечание: этот вопрос был мотивирован попыткой создать хакерскую обработку препроцессора, чтобы сгенерировать неоперативное распределение, чтобы ответить на этот другой вопрос: Макрос, который принимает новый ...
в любом случае, если объект не реализован в идиоме Handle-Worker.
У меня сложный класс со многими переменными. У меня есть надежный и проверенный экземпляр конструктора:Некоторые из конструкторов копирования переменных-членов, вызываемых в списке инициализаторов, выполняют распределение. Applepie::Applepie( ...
Ах, прости @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 ...
Оба случая в ответе выше приводят к UB. В общем, идиомы следует избегать, потому что есть так много разных способов, которые могут привести к UB.
т мой вопрос@DeadMG говорит, что реинициализация класса через [https://stackoverflow.com/questions/6036086/is-it-valid-to-directly-call-a-virtual-destructor] указатель является неопределенным поведением. Есть ли где-нибудь упоминание об этом в ...
, Почему они требуются в интерфейсе ускользает от меня
мог найти точный ответ на этот вопрос и, следовательно, размещать здесь. Когда я думаю о векторе, он должен строить объекты в смежной области памяти. Это означает, что вектор сохраняет выделенную память и должен выполнить конструкцию на месте (= ...
stackoverflow.com/questions/364483/...
тся ли следующий законный C ++ с четко определенным поведением? class my_class { ... }; int main() { char storage[sizeof(my_class)]; new ((void *)storage) my_class(); }Или это проблематично из-за соображений приведения / выравнивания указателя?
5.3.5, а не 3.7.4.
рен, что этот код должен быть незаконным, так как он явно не будет работать, но, похоже, это разрешено C ++ 0x FCD.
Что такое конструктор на месте в C ++? [Дубликат]
Возможный дубликат:C ++ - «новое размещение»Что такое конструктор на месте в C ++?например Тип данных * x = new (y) Тип данных ();