Wpis z mikrobloga

#programowanie #cpp

Mireczki mam pewien problem, dylemat. Powiedzcie mi: kiedy przy deklaracji zmiennej/obiektu rzucać go na stos a kiedy na stertę? W zasadzie nie widzę wiekszych różnic. Gdzieś, kiedyś, jakoś, ktoś napisał "ee, lepiej umieść cośtam na stercie bo jeszcze na stosie Ci się nadpisze albo straci zasięg i będzie" - jak skoro stos nie może się nadpisać? Poza tym nawet jeżeli zadeklarujemy coś w funkcji na stercie to po wyjściu z niej też traci zasięg. Więc jeszcze raz zapytam: jaka jest różnica oprócz możliwości użycia parametrowych konstruktorów (i tworzenia dynamicznych tablic) i kiedy z którego rozwiązania korzystać?
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@bartoneczek: LOL to co zacytował @asdasty jest mocne. Czas zycia obiektu nie powinien byc nigdy dłuższy niż zakres w jakim jest używany, który też nalezy ograniczac do minimum. Wielkość stosu w Windows to domyślnie 1MB. Na nim lądują wszystkie zmienne uzywane w konkretnym momencie wykonania programu, które zwalniają meijsce po wyjściu z zakresu, duże obiekty alokuje się dynamicznie, co jest całkowicie uzasadnione, gdyż ma się pełną kontrolę nad zuzyciem
  • Odpowiedz
Poza tym nawet jeżeli zadeklarujemy coś w funkcji na stercie to po wyjściu z niej też traci zasięg.


@bartoneczek: Na stosie czy stercie się niczego nie deklaruje a alokuje, i to co się zaalokuje na stercie nie jest usuwane po wyjściu z bloku. Poza tym co masz na myśli mówiąc o parametrycznych konstruktowach? W jednym i drugim przypadku możesz przecież ich użyć.

A różnice z grubsza są
  • Odpowiedz
Na stosie czy stercie się niczego nie deklaruje a alokuje,


Ale wiadomo o co mi chodziło. :P

W jednym i drugim przypadku możesz przecież ich użyć.


No
  • Odpowiedz