Wpis z mikrobloga

#programowanie #cpp #programista15k #gamedev
Mam takie pytanie, weźmy poniższa klasę

class Engine
{
Int zmienna;
Model* model;
Materiał* materiał;
Kolor kolor;

Void jakasfuncja();
}

I teraz w main () albo innym głównym bloku chce utworzyć obiekt tej klasy, ale robić to jako Engine engine czy Engine* engine = new Engine;

I od czego to zależy? Od ilości pamięci jaka ta klasa zabiera? Zadziała w obu przypadkach?
  • 10
@Kopytko1:
Engine engine; -> To tworzenie zmiennej na stosie.
Engine* engine = new Engine; To tworzenie obiektu na stercie i wskaźnika do niego na stosie.

Więcej szczegółów:
https://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap
https://www.programmerinterview.com/index.php/data-structures/difference-between-stack-and-heap/

I od czego to zależy?


Od tego co masz zamiar zrobić. Zmienna na stosie są alokowane przy wywołaniu funkcji i usuwane przy wychodzeniu z funkcji. Zmienne na stercie musisz sam ręcznie zaalokować i sam usunąć z pamięci. Dostęp do stosu jest szybszy