Вопросы по теме '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 просмотров
schedule
05.08.2022
Замена объекта на объект того же типа
Правильно ли определено следующее?
#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 просмотров
schedule
24.10.2023
Использование оператора размещения-нового и конструктора копирования вместо оператора присваивания
Я обнаружил проблему при использовании стороннего кода, который нельзя изменить. Мне нужно сделать копию члена объекта. Я не могу сделать это строго потому, что у одного из внутренних членов есть частный оператор присваивания. Единственное решение,...
1573 просмотров
schedule
14.01.2024
После размещения нового в буфере у буфера и экземпляра одинаковый адрес 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 просмотров
schedule
05.04.2023
Плохо ли использование нового места размещения в качестве оператора присваивания копии?
Иногда я хочу создавать классы/структуры с const элементами. Я понимаю, что это плохая идея по нескольким причинам, но ради аргумента давайте представим, что единственная причина в том, что это делает правильно сформированное operator =...
99 просмотров
schedule
25.03.2023
Учебник по C++, 5-е издание, новое размещение
Насколько я знаю, размещение new не выделяет память, а представляет собой форму оператора new , который берет указатель на уже выделенную память и создает там объект.
Но меня так смущает этот текст из 5-го издания учебника по С++:
Вместо...
69 просмотров
schedule
26.07.2022