14
ответов

Какие виды использования используются для «размещения новых»?

Кто-нибудь здесь когда-либо использовал "размещение нового" в C ++? Если да, то для чего? Мне кажется, это было бы полезно только на оборудовании с отображенной памятью.
вопрос задан: 26 March 2019 22:11
12
ответов

Каковы варианты использования конструкции C ++ «размещение нового»?

Я только что узнал о конструкции C ++ под названием «размещение нового». Это позволяет точно контролировать, куда указатель указывает в памяти. Это выглядит так: #include // Must # ...
вопрос задан: 12 December 2008 14:47
7
ответов

C++, действительно ли возможно вызвать конструктора непосредственно без нового?

Я могу вызвать конструктора явно, не используя новый, если у меня уже есть память для объекта? класс Object1 {символ *ул.; общественность: Object1(char*str1) {str=strdup (str1); помещает ("ctor"...
вопрос задан: 22 March 2010 14:19
6
ответов

Используя новый (это) конструкторам повторного использования

Это недавно подошло в классе, по которому я - обучающий помощник. Мы учили студентов, как сделать конструкторов копии в C++ и студентов, которым первоначально преподавали Java, который спрашивают если Вы...
вопрос задан: 23 August 2019 10:50
6
ответов

размещение, новое для подчинений другому конструктору

Действительно ли это безопасно? Я не использую виртуальных функций в своей фактической реализации, но я испытываю желание полагать, что, даже если бы я был, это все еще было бы безопасно. класс Foo {Foo () {//...
вопрос задан: 19 April 2010 14:32
3
ответа

CUDA: Обертывание выделения памяти устройства в C++

Я начинаю использовать CUDA в данный момент и иметь, чтобы признать, что я немного разочарован API C. Я понимаю причины выбора C, но имел язык C++, на котором основаны, вместо этого, несколько...
вопрос задан: 18 November 2008 21:23
0
ответов

присвоение класса константному члену

Рассмотрим следующий код :struct s { постоянный идентификатор; s (int _идентификатор ):идентификатор (_идентификатор ){} }; //... вектор v; v.push _назад (s (1 )); Я получаю сообщение об ошибке компилятора, что 'const int id' не может...
вопрос задан: 7 July 2018 00:53
0
ответов

Как удалить объект, созданный с помощью оператора размещения new?

char * buf = new char [sizeof (T)]; новый (buf) T; Т * т = (Т *) буф; //код... // здесь я должен уничтожить * t, но поскольку это аргумент шаблона и может быть // также создается через базовые типы (например, int), поэтому ...
вопрос задан: 14 June 2017 09:23
0
ответов

Что такое конструктор на месте в C ++? [дубликат]

Возможный дубликат: C ++ «новое размещение» Что такое конструктор на месте в C ++? например, Datatype * x = new (y) Datatype ();
вопрос задан: 23 May 2017 12:25
0
ответов

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

(Примечание: этот вопрос был мотивирован попыткой придумать хакерский метод препроцессора, чтобы сгенерировать безоперационное выделение для ответа на этот другой вопрос: Макрос, который принимает новый объект ... так что имейте это в виду!) ...
вопрос задан: 23 May 2017 12:22
0
ответов

Нужно ли мне беспокоиться о выравнивании при использовании оператора new размещения?

Я прочитал это Когда я должен беспокоиться о выравнивании? но я до сих пор не знаю, нужно ли мне беспокоиться о невыровненном указателе, возвращаемом оператором размещения нового -, как в этом примере :class A { общественный :...
вопрос задан: 23 May 2017 12:09
0
ответов

Placement new breaks consts and references?

После обсуждения моего ответа на этот вопрос, видимо: следующий код разрешен struct Foo { int x; }; Foo f; Foo & f_ref = f; (&f) -> ~Foo (); new (&f) Foo ();...
вопрос задан: 23 May 2017 11:58
0
ответов

Законность использования оператора delete для указателя, полученного в результате размещения new

Я совершенно уверен, что этот код должен быть незаконным, так как он явно не работает, но, похоже, разрешено C ++ 0x FCD. класс X {/ * ... * /}; void * raw = malloc (sizeof (X)); X * p = новый (необработанный) X (); ...
вопрос задан: 23 May 2017 11:51
0
ответов

Является ли `new (this) MyClass ();` неопределенное поведение после прямого вызова деструктора?

В этом моем вопросе @DeadMG говорит, что повторная инициализация класса с помощью указателя this является неопределенное поведение. Есть ли где-нибудь в стандарте упоминание о нем? Пример: #include <...
вопрос задан: 23 May 2017 11:45
0
ответов

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

Иногда приятно начать все сначала. В C ++ я могу использовать следующий простой маневр: {T x (31, Blue, false); х. ~ Т (); // достаточно старого x :: new (& x) T (...
вопрос задан: 17 July 2016 23:47
0
ответов

Может ли вызов delete для указателя, который выделен с размещением new?

Можно ли вызвать delete для указателя, который выделен с размещением new? Если нет, то почему? Пожалуйста, объясните подробнее. Я знаю, что нет места удаления. Но мне интересно, почему просто delete ...
вопрос задан: 10 August 2014 14:37
0
ответов

Почему я должен использовать размещение new?

Кажется, размещение new создает новый объект в предварительно выделенной памяти, значит ли это, что на это потребуется меньше время? Похоже, это быстрее, чем размещение с использованием старого обычного нового. Тогда, если это ...
вопрос задан: 27 August 2012 05:10
0
ответов

Гарантируется ли сохранение ранее инициализированной памяти после нового вызова размещения?

Скажем, у меня есть следующая :структура A { интервал х; }; //... A *aOriginal = новый A (); // конструкция значения aOriginal assert (aOriginal ->x == 0 ); A *aSecond = новый (aOriginal )A; утверждать (aSecond ->x ==...
вопрос задан: 30 July 2012 21:07
0
ответов

Размещение нового эквивалента поведения

У меня есть вопрос относительно размещения нового синтаксиса в C++. Являются ли следующие два фрагмента кода функционально эквивалентными и могут использоваться взаимозаменяемо (я не подразумеваю, что следует использовать второй, ...
вопрос задан: 14 May 2012 14:52
0
ответов

Нужно ли нам явно вызывать деструктор для “ простые классы POD», выделенные с «новым размещением»?

Здесь под «простым» я подразумеваю класс с невиртуальным пустым деструктором или типом POD. Типичный пример: char buffer[SIZE]; T *p = новый (буфер) T; ... р->~Т(); // <---- всегда? Что произойдет, если мы...
вопрос задан: 11 May 2012 06:46
0
ответов

вызов конструктора копирования внутри другого конструктора

#include #включить #включить <вектор> #включить <строка> класс А { public:std::string s; A(){ s = "строка"; новый(это)A(*это);...
вопрос задан: 19 March 2012 10:50
0
ответов

Почему этот код пытается вызвать конструктор копирования?

Я просто потратил слишком много времени на то, чтобы возиться с ошибкой компиляции в Visual Studio. Я переработал код в небольшой компилируемый пример, представленный ниже, и попробовал его на IdeOne, и получил то же самое ...
вопрос задан: 24 January 2012 18:20
0
ответов

malloc и размещение новое по сравнению с новым

Я изучал это в течение последних нескольких дней, и до сих пор я не нашел ничего убедительного, кроме догматических аргументов или апелляций к традиции (например, «это Путь C ++! "). Если я ...
вопрос задан: 22 January 2012 21:53
0
ответов

Как правильно освободить память, выделенную при размещении new?

Я читал, что когда вы используете размещение new, вам нужно вызывать деструктор вручную. Рассмотрим следующий код: // Самостоятельное выделение памяти char * pMemory = new char [sizeof (...
вопрос задан: 18 January 2012 23:20
0
ответов

Новое размещение массива требует неопределенных накладных расходов в буфере?

5.3.4 [expr.new] черновика C ++ от 11 февраля дает пример: new (2 , f) T [5] приводит к вызову оператора new [] (sizeof (T) * 5 + y, 2, f). Здесь x и y - неотрицательные неопределенные значения, представляющие ...
вопрос задан: 4 January 2012 03:02
0
ответов

C ++ - оператор перегрузки new и предоставление дополнительных аргументов

Я знаю, что вы можете перегрузить оператор new. Когда вы это сделаете, ваш метод по умолчанию получает параметр size_t. Однако можно ли отправить параметр size_t, а также дополнительные параметры, предоставляемые пользователем ...
вопрос задан: 31 December 2011 03:03
0
ответов

Это хакерство для удаления предупреждения UB о псевдонимах?

Мы только что обновили наш компилятор до gcc 4.6 и теперь получаем некоторые из этих предупреждений. На данный момент наша кодовая база не в состоянии скомпилировать с c ++ 0x, и в любом случае мы не хотим запускать это в prod (at ...
вопрос задан: 13 December 2011 15:14
0
ответов

Имеет ли приведение указателя к «void *» какой-либо эффект при вызове размещения new?

I ' m просматривая код настраиваемого контейнера, и некоторые его части создают такие элементы: :: new ((void *) & buffer [index]) CStoredType (other); и некоторые делают это так: :: new (& buffer [index] ...
вопрос задан: 9 December 2011 09:52
0
ответов

Что плохого в таком использовании размещения new []? do

Рассмотрим программу ниже. Это было упрощено из сложного случая. Он не может удалить предыдущую выделенную память, если я не удалю виртуальный деструктор в классе Obj. Я не понимаю ...
вопрос задан: 24 November 2011 20:58
0
ответов

Могу ли я использовать размещение new (this) в operator =?

Справочная информация: У меня сложный класс с множеством переменных. У меня есть звуковой и проверенный конструктор копирования: Applepie :: Applepie (const Applepie & copy): m_crust (копия.m_crust), m_filling (копия ....
вопрос задан: 24 August 2011 15:38