htfhere
#programowanie #cpp jeśli utworzę dynamicznie tablicę w funkcji, a operatora delete użyję na końcu maina to pamięć zostanie prawidłowo zwolniona? Czy dynamicznie alokowana w funkcji jest widziana poza nią?
  • Najlepsze
  • Wszystkie komentarze
sylwke3100
@htfhere: Jeśli możesz to do tworzenia tablic dynamicznych używaj vectorów
calka
@htfhere: napisz własny garbage collector i miej to w dupie ( ͡° ͜ʖ ͡°)
mamapoth
@htfhere: Jak masz wskaźnik to tak.
KrzaQ2
@htfhere: A co to za kretyńskie zakazy?
p.....b
@htfhere: zasada jest taka: w kodzie musisz mieć taką samą ilość new i delete (malloc/free). To że para new/delete jest używana raczej w obrębie jednej funkcji jest związane z czytelnością. Łatwiej jest zrozumieć jak funkcja działa gdy wszystkie szczegóły są w jednym miejscu.
TheNewIcek
TheNewIcek
Jeżeli jakoś zwrócisz wskaźnik do zaalokowanej pamięci z tej funkcji to zwolnienie na końcu maina będzie ok. Dynamicznie zaalokowana pamięć jest "widziana" w całym procesie. Możesz ją zwolnić w zasadzie w dowolnym miejscu i czasie.
p.....b
@htfhere: Masz dwa rozwiązania, albo poprzez zmienną globalną, albo poprzez referencje na wskaźnik: http://ideone.com/bCT9qH
htfhere
htfhere Autor
0
@sylwke3100: No właśnie mam "zakaz" :)
htfhere
htfhere Autor
0
@TheNewIcek: @psychob: Dzięki za odpowiedź. Czy moglibyście jeszcze mi powiedzieć, w jaki sposób powinienem tą tablicę zaalokować w funkcji, żebym mógł jej używać poza nią ( funkcja musi być typu void, dlatego zwracanie tablicy odpada ) ? Bo -> takie zaalokowanie tablicy w funkcji sprawia, że poza nią dostaję "Error, indentifier "tablica dwuwymiarowa" is undefined