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

2 ответа

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

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

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 и оператора delete с пользовательским пулом памяти / распределителем

Я работаю над реализацией пула памяти / распределителя памяти и настраиваю ее в поместье, где только особый тип объекта «Клиент» может рисовать из пула. Клиент может быть либо создан непосредственно в пуле, либо может использовать пул ...

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

2 ответа

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

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

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 ...

1 ответ

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

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

3 ответа

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

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

2 ответа

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

Может ли это привести к неопределенному поведению? uint8_t storage[4]; // We assume storage is properly aligned here. int32_t* intPtr = new((void*)storage) int32_t(4); // I know this is ok: int32_t value1 = *intPtr; *intPtr = 5; // But can one ...

6 ответов

Уничтожить, а затем построить новый объект, используя ту же переменную

Иногда приятно начать все сначала. В C ++ я могу использовать следующий простой маневр: { T x(31, Blue, false); x.~T(); // enough with the old x ::new (&x) T(22, Brown, true); // in with the new! // ... }По окончании действия деструктор ...

2 ответа

Как напрямую прочитать огромный кусок памяти в std :: vector?

У меня есть огромный непрерывный массивx что яfread из файла. Как мне бросить этот кусок вstd::vector<>? Другими словами, я предпочитаю, чтобы результат был вstd::vector<> а не массив, но я хочу, чтобы результирующий код C ++ был столь же ...