Результаты поиска по запросу "placement-new"
Является ли это четко определенным / законным для размещения новых несколько раз по одному и тому же адресу?
(Примечание: этот вопрос был мотивирован попыткой создать хакерскую обработку препроцессора, чтобы сгенерировать неоперативное распределение, чтобы ответить на этот другой вопрос: Макрос, который принимает новый ...
представляют начало того же хранилища. И я не понимаю, почему, если хранение подобъекта связано с хранением содержащего объекта, хранение объекта не связано с хранением его подобъекта.
ительно этого кода: #include <string> int main() { union u { u() { i = 0; } ~u() {} int i; std::string s1; std::string s2; } u; new (&u) std::string{}; }[Intro.object] / 2 [https://timsong-cpp.github.io/cppwp/n4659/intro.object#2]Говорит, ...
Опасно ли использовать размещение new на старом объекте без явного вызова деструктора первым?
Я хотел бы переработать память для объекта, а не освобождать и реконструировать его. Является ли следующее использование «размещения нового» безопасным, предполагая, чтоFoo на практике не содержит указателей (но может содержать функции)? Кроме ...
stackoverflow.com/questions/364483/...
тся ли следующий законный C ++ с четко определенным поведением? class my_class { ... }; int main() { char storage[sizeof(my_class)]; new ((void *)storage) my_class(); }Или это проблематично из-за соображений приведения / выравнивания указателя?
Ах, прости @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 ...
О, неважно, я понимаю, что ты говоришь. Создайте объект, прежде чем вызывать деструктор оригинала, а затем двигайтесь от него.
ю, что явный вызов деструктора может привести к неопределенному поведению из-за двойного вызова деструктора, как здесь: