У меня только что был быстрый вопрос о том, как работают переменные стека и переменные кучи. Насколько я понимаю, переменные стека - это переменные, которые после возврата функций будут удалены, а переменные кучи являются постоянными. Но что меня действительно смущает, так это то, как размещать переменные кучи внутри функций:
int MyObject::addObject(const char* a){
MyObject newObject(a);
return 0;
}
Скажем, у меня есть конструктор для MyObject
, то есть newObject (const char * a)
. Затем в этой функции, когда она вызывается, после возврата удаляется ли вновь созданный newObject
? Если да, то как тогда можно выделить память в куче внутри функции? Если нет, как вы очистите свою память позже?
Кроме того, какова именно роль деструктора и когда он вызывается?