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

3 ответа

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

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

1 ответ

 представляют начало того же хранилища. И я не понимаю, почему, если хранение подобъекта связано с хранением содержащего объекта, хранение объекта не связано с хранением его подобъекта.

ительно этого кода: #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]Говорит, ...

3 ответа

Опасно ли использовать размещение new на старом объекте без явного вызова деструктора первым?

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

2 ответа

Строгий псевдоним C ++, когда не используется указатель, возвращаемый путем размещения new

3 ответа

Опасно ли использовать размещение new на старом объекте без явного вызова деструктора первым?

Я хотел бы переработать память для объекта, а не освобождать и реконструировать его. Является ли следующее использование «размещения нового» безопасным, предполагая, чтоFoo на практике не содержит указателей (но может содержать функции)? Кроме ...

3 ответа

Использование оператора new и оператора delete с пользовательским пулом памяти / распределителем

5 ответов

stackoverflow.com/questions/364483/...

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

4 ответа

Как новое размещение узнает, какой макет создать?

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 ответа

О, неважно, я понимаю, что ты говоришь. Создайте объект, прежде чем вызывать деструктор оригинала, а затем двигайтесь от него.

ю, что явный вызов деструктора может привести к неопределенному поведению из-за двойного вызова деструктора, как здесь: