
#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
5
@htfhere: Jeśli możesz to do tworzenia tablic dynamicznych używaj vectorów

calka
4
@htfhere: napisz własny garbage collector i miej to w dupie ( ͡° ͜ʖ ͡°)

mamapoth
3
@htfhere: Jak masz wskaźnik to tak.

KrzaQ2
2
@htfhere: A co to za kretyńskie zakazy?

konto usunięte
1
@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
1
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.

konto usunięte
1
@htfhere: Masz dwa rozwiązania, albo poprzez zmienną globalną, albo poprzez referencje na wskaźnik: http://ideone.com/bCT9qH

htfhere Autor
0
@sylwke3100: No właśnie mam "zakaz" :)

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





