удалить / освободить память, выделенную malloc и повторно использованную новым [duplicate]

Очень похожий на AOP подход - это вводить материал INotifyPropertyChanged на уже созданный объект на лету. Вы можете сделать это с помощью чего-то вроде Castle DynamicProxy. Вот статья, которая объясняет технику:

Добавление INotifyPropertyChanged к существующему объекту

0
задан nano 7 March 2019 в 12:10
поделиться

1 ответ

new (p) A() - это размещение нового , которое не выделяет память и вызывает только конструктор.

Вызов обычного delete для этого указателя, возвращаемого путем размещения new, является неопределенным поведением.

Для правильного освобождения здесь вам нужно вызвать деструктор и затем free память:

pa->~A(); // or, in C++17 std::destroy_at(pa);
free(pa);
0
ответ дан Maxim Egorushkin 7 March 2019 в 12:10
поделиться
Другие вопросы по тегам:

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