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

Https://Godbolt.Org/Z/EYPdq4fs6 Почему placement new не компилируется без #include <new>, если это

часть языка, а не библиотечная функция?
Почему обычный new (без placement param) при этом компилируется, учитывая что это операция "сложнее" (i.e. помимо вызова конструктора надо еще и памяти откуда-то достать)?

2 ответов

24 просмотра

скорее всего потому, что нужно ::operator new иметь

If placement_params are provided, they are passed to the allocation function as additional arguments. Such allocation functions are known as "placement new", after the standard allocation function void* operator new(std::size_t, void*), which simply returns its second argument unchanged https://en.cppreference.com/w/cpp/language/new скорее всего из-за этого, должно быть вызвано void* operator new ( std::size_t count, void* ptr ); //(9) https://en.cppreference.com/w/cpp/memory/new/operator_new заметьте, что The versions (1-4) are implicitly declared in each translation unit even if the <new> header is not included. Versions (1-8) are replaceable: a user-provided non-member function with the same signature defined anywhere in the program, in any source file, replaces the default version. Its declaration does not need to be visible. интуитивно подразумевается: версии (1)-(4) обычные функции для линкера, функции (5)-(8) обычные, но требуют определение тега std::nothrow, а версия (9) это специальная заглушечная библиотечная функция

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта