Вопросы по теме 'placement-new'

размещение-новый адрес против необработанного адреса памяти
Результат размещения new всегда кажется таким же, как указатель памяти, который я предоставляю размещению new. С GCC это, похоже, верно даже для классов с виртуальными функциями, например ... #include <iostream> #include <vector>...
1276 просмотров
schedule 14.05.2023

Несколько аргументов для размещения C++ нового «конструктора»
Чтобы выполнить некоторое пользовательское отслеживание памяти (предотвращение утечки, обнаружение повреждения), мне приходится использовать новое размещение для создания объектов С++, что отлично работает, но я изо всех сил пытаюсь понять, как я могу...
1727 просмотров
schedule 21.03.2024

Замена некопируемого, неподвижного объекта
Рассмотрим следующий код: // A non-copyable, non-movable aggregate struct Strange { const int & i; char & c; }; class Container { private: int my_i; char my_c; Strange thing; public: //...
202 просмотров
schedule 14.10.2023

Пользовательский std::allocator для классов с замененным оператором new
Недавно я заменил некоторые классы Vector/Matrix на классы, использующие SSE, и теперь проверяю правильность выравнивания памяти. Следуя совету в ответе на этот вопрос , я заменил оператор new/delete для классы, которым это требуется, и начали...
1354 просмотров

Замена объекта на объект того же типа
Правильно ли определено следующее? #include <iostream> #include <string.h> using namespace std; struct Const { const int i; Const (int i) : i(i) {} int get0() { return 0; } // best accessor ever! }; int main() {...
675 просмотров

Использование оператора размещения-нового и конструктора копирования вместо оператора присваивания
Я обнаружил проблему при использовании стороннего кода, который нельзя изменить. Мне нужно сделать копию члена объекта. Я не могу сделать это строго потому, что у одного из внутренних членов есть частный оператор присваивания. Единственное решение,...
1573 просмотров

После размещения нового в буфере у буфера и экземпляра одинаковый адрес void *?
Пожалуйста, посмотрите код ниже: unsigned char* p = new unsigned char[x]; CLASS* t = new (p) CLASS; assert((void*)t == (void*)p); Могу я предположить (void*)t == (void*)p ?
707 просмотров
schedule 07.05.2022

Нарушение константной корректности [новое размещение] и неопределенное поведение
Я прочитал следующее: Размещение новых разрывов, констант и ссылок? и, прочитав слайды Маттиса Круза на C ++ Meeting , я запутался относительно следующего кода struct U { const int i; }; std::vector<U> B; B.push_back({ 1 });...
117 просмотров

Плохо ли использование нового места размещения в качестве оператора присваивания копии?
Иногда я хочу создавать классы/структуры с const элементами. Я понимаю, что это плохая идея по нескольким причинам, но ради аргумента давайте представим, что единственная причина в том, что это делает правильно сформированное operator =...
99 просмотров
schedule 25.03.2023

Учебник по C++, 5-е издание, новое размещение
Насколько я знаю, размещение new не выделяет память, а представляет собой форму оператора new , который берет указатель на уже выделенную память и создает там объект. Но меня так смущает этот текст из 5-го издания учебника по С++: Вместо...
69 просмотров
schedule 26.07.2022