В C ++, если объект не создается в куче, вся память автоматически освобождается.Например, Other_Class создается в стеке, а не в куче, поэтому Other_Class будет автоматически освобожден возвращаемой функцией.
Однако объекты в куче НЕ будут автоматически освобождены.Вместо этого разработчики обязаны очистить любую память в куче.
Например, хотя ваш код в порядке, этот код создает утечку памяти:
int main ()
{
Other_Class *memOnHeap = new Other_Class;
return 0;
}
В приведенном выше коде gcc позволит его скомпилировать, однако вы создадите утечку памятиразмер объекта Other_Class, потому что вы выделили ему память на утечку, но не освободили вызовом delete.Проблема может быть легко решена путем вставки delete memOnHeap;
прямо перед возвращением.