Wpis z mikrobloga

#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ą?
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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.
  • Odpowiedz
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.
  • Odpowiedz
@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
  • Odpowiedz