Таким образом, память стека нельзя освободить вручную с помощью удаления, потому что это каким-то образом вызывает UB. Но при создании объекта производного класса задействовано ключевое слово «новое». Скажите, например:
void some_function(){
Base* base;
base = new Derived;
}
Поскольку задействовано «новое», находится ли base = new Derived в куче? И если да, то память, где он находится, нужно снова освобождать вручную? Или он находится в стеке и память все равно освободится после завершения программы?
std::unique_ptr
илиstd::shared_ptr
. 3) Когда программа завершает работу, память освобождается. Но вы продолжаете выделять память, и если вы не удалите ее, произойдет утечка памяти. - person Jagannath   schedule 01.04.2015