• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dynamiczna alokacja pamięci w funkcji

VPS Starter Arubacloud
0 głosów
739 wizyt
pytanie zadane 6 kwietnia 2016 w C i C++ przez Barus Stary wyjadacz (14,120 p.)

Witam!

Piszę dość duży program w C++, w którym jest wiele funkcji i w każdej z nich muszę utworzyć nowe tablice (każda tablica w danej funkcji odnosi się do czegoś innego). Tylko nie wiem czy po zakończeniu danej funkcji dane z tych tablic zostają wymazywane z komórek pamięci. Głównie chodzi mi o to czy warto używać dynamicznej alokacji w funkcjach (czy to coś da, czy po zakończeniu tej funkcji dane z tablic zostaną wymazane)? Proszę o odpowiedź

Pozdrawiam! 

2 odpowiedzi

+2 głosów
odpowiedź 6 kwietnia 2016 przez Grzyboo Nałogowiec (28,860 p.)
wybrane 6 kwietnia 2016 przez Barus
 
Najlepsza

Jeżeli używasz new to zalokowana przez Ciebie pamięć pozostanie dopóki nie użyjesz na wskaźniku do niej delete. W innym wypadku, jeżeli tworzysz tablicę w funkcji to po zakończeniu funkcji zwalniana jest pamięć przydzielona tej tablicy.

komentarz 6 kwietnia 2016 przez Barus Stary wyjadacz (14,120 p.)
Dziękuję za odpowiedź!

Czyli wniosek z tego jest taki, że nie warto używać dynamicznej alokacji w funkcjach, bo i tak wszystkie zmienne zostaną skasowane po jej zakończeniu, tak ? A czy to oznacza, że dynamicznie alokuje się w programie głównym, bo to coś daje ?
1
komentarz 6 kwietnia 2016 przez draghan VIP (106,230 p.)
Barus - no i oczywiście pamiętaj, żeby wskaźniki na te tablice mieć dostępne również poza funkcjami, jeśli chcesz mieć dostęp do tych danych na zewnątrz. :)

Grzyboo +1. :)
komentarz 6 kwietnia 2016 przez Barus Stary wyjadacz (14,120 p.)
Czyli to oznacza używanie zmiennych globalnych ? :)
1
komentarz 6 kwietnia 2016 przez draghan VIP (106,230 p.)

Czyli wniosek z tego jest taki, że nie warto używać dynamicznej alokacji w funkcjach, bo i tak wszystkie zmienne zostaną skasowane po jej zakończeniu

Nie zrozumiałeś. :/ Dynamicznie alokujesz - dane "nie znikają" po opuszczeniu zakresu (ale zawartość wskaźnika już tak). Jak przechowasz w bezpiecznym miejscu wskaźnik, to będziesz miał dostęp do tych danych dopóki sam nie zwolnisz pamięci.

1
komentarz 6 kwietnia 2016 przez draghan VIP (106,230 p.)

Czyli to oznacza używanie zmiennych globalnych ? :)

Nie. Oznacza to przechowywanie adresu np. w zmiennej z innej funkcji, czy w polu danych zewnętrznego obiektu.

komentarz 6 kwietnia 2016 przez Barus Stary wyjadacz (14,120 p.)
Rozumiem, dziękuję :)
1
komentarz 6 kwietnia 2016 przez draghan VIP (106,230 p.)
Na zdrowie. :)
+3 głosów
odpowiedź 6 kwietnia 2016 przez adrian17 Ekspert (344,100 p.)

Głównie chodzi mi o to czy warto używać dynamicznej alokacji w funkcjach

To, czy "W funkcji" czy "nie w funkcji" (cokolwiek to znaczy) nie ma nic do rzeczy. Dynamiczną alokację używa się wtedy, gdy tego potrzebujesz - gdy chcesz by obiekt żył dłużej niż normalnie lub czasem gdy potrzebna jest polimorficzność.

komentarz 6 kwietnia 2016 przez Barus Stary wyjadacz (14,120 p.)
Chyba łapię, dziękuję za odpowiedź :)

Podobne pytania

0 głosów
1 odpowiedź 348 wizyt
pytanie zadane 27 września 2016 w C i C++ przez Avernis Nałogowiec (27,400 p.)
0 głosów
2 odpowiedzi 181 wizyt
0 głosów
4 odpowiedzi 1,188 wizyt
pytanie zadane 13 kwietnia 2016 w C i C++ przez veryhotshark Obywatel (1,620 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...