170 похожих чатов

Добрый день. Вопрос немного странный наверное. Но к примеру. arr - указатель

на массив типа T.
i - некая итерация в цикле.
new(arr + i) T(arr[i]);

Я правильно понимаю, что здесь вызывается конструктор для массива объектов Т? Или...?
Буду благодарен, если объясните

8 ответов

29 просмотров

вызывается конструктор без выделения памяти

Но общий смысл подобного довольно туманен. По факту это копирование объекта в себя и я не могу представить себе случая, когда это было бы необходимо.

Alexander "Ternvein" Isaev
Но общий смысл подобного довольно туманен. По факт...

Вам передали буффер для кодирования в него какой нибудь информации. А вы таким не тривиальным образом sec_num/ещё какие нибудь данные заполняете.

Так заполнение либо уже произошло, либо в рамках такой операции (при условии сохранения ее конвенционной семантики) не произойдет.

Sergey Anisimov
Так заполнение либо уже произошло, либо в рамках т...

Вам надо инициализировать какие то данные в структуре. Собственно вы на уже выделенной памяти вызываете копирующий конструктор. А он, выполняет какие то действия, которые удобнее выполнить в нём самом. Я чаще встречал конечно просто дефолтный placement new. Для того что бы на памяти, выделенной снаружи как блоб, инициализировать структуру.

Sasha Chernov
Вам надо инициализировать какие то данные в структ...

И эти данные либо уже инициализированы, либо останутся неинициализированными (в лучшем случае) в результате подобной операции. "Type-punning" такой, увы, обречен (а с двадцатого стандарта еще и избыточен скорее всего). Edit: Уточню, пожалуй, что его здесь и нет, разве что предполагается.

Sergey Anisimov
И эти данные либо уже инициализированы, либо остан...

Они могут быть не инициализированы. Там указатель i*. std::vector<char> buffer (n*sizeof(T), 0); auto i* = reinterpred_cast<T*>(buffer.data()); auto* t = new(i)T();

Sasha Chernov
Они могут быть не инициализированы. Там указатель ...

Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта