Информация об изменениях

Сообщение Re: placement new от 10.12.2022 17:58

Изменено 11.12.2022 21:40 rg45

Re: placement new
Здравствуйте, maks1180, Вы писали:

M>сначала я создал экземпляр сlass A через placement new

M>new(p)A();
M>поработал с ним, потом создал сlass B, на тот же месте где был Class A
M>new(p)B();

M>1) Есть ли гарантии, что v1 и v2 класс A и В будут по одинаковым смещениям ?

M>2) Есть ли гарантии, что конструктор класса B не перетрёт значения v1, v2 которые остались в памяти от прошлого экземпляра класса A ?

Согласно стандарту языка, использование одной и той же области памяти для размещения двух разных объектов порождает неопределенное поведение. Нельзя так делать.
Re: placement new
Здравствуйте, maks1180, Вы писали:

M>сначала я создал экземпляр сlass A через placement new

M>new(p)A();
M>поработал с ним, потом создал сlass B, на тот же месте где был Class A
M>new(p)B();

M>1) Есть ли гарантии, что v1 и v2 класс A и В будут по одинаковым смещениям ?

M>2) Есть ли гарантии, что конструктор класса B не перетрёт значения v1, v2 которые остались в памяти от прошлого экземпляра класса A ?

Согласно стандарту языка, использование одной и той же области памяти для размещения двух разных объектов порождает неопределенное поведение. Нельзя так делать.

P.S. Был не прав, каюсь. Подробности здесь: http://rsdn.org/forum/cpp/8426197.1
Автор: rg45
Дата: 12.12.22