Portál AbcLinuxu, 10. května 2025 11:09
Řešení dotazu:
void fnc()
{
int a=0;
}
Takáto premenná zaberá sizeof(int) bajtov v pamäti. Jej "alokovanie" robí systém a jej "dealokovanie" robí tiež systém a to automaticky a okamžite ako sa opustí scope jej platnosti. Slová alokovanie a dealokovanie sú v úvodzovkách, pretože ide len o vyhradenie miesta na stack-u.
Ak ale urobíš
void fnc()
{
NEJAKY_TYP *a=AlokacnaFunkcia();
}
tak odalokovanie pamäte, ktorú zabrala "AlokacnaFunkcia()", za teba nikto neurobí. Musíš ho urobiť sám. Môžeš to urobiť v tej istej funkcii, alebo inej funkcii. To je jedno. Len hodnotu pointra, ktorú tá alokačná funkcia vrátila, budeš asi potrebovať dostať až na to miesto, kde zavoláš uvoľnenie.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.