02 - Dynamic Memory Allocation

Zdroj
ručne priradené
Pridané

Pozrieť na YouTube →

Preber si túto prednášku so svojou AI

Skopíruj pripravený podklad a vlož ho do ChatGPT, Claude alebo inej AI — bude ťa učiť alebo skúšať len z tejto prednášky.

Otvoriť AI: ChatGPT · Claude · Gemini

Zhrnutie prednášky

Prednáška nadväzuje na úvod do pamäte a ukazovateľov a ukazuje, že priradenie operátorom = pri reťazcoch kopíruje len adresu, nie obsah, takže zmena cieľového reťazca mení aj zdrojový. Pri vlastnej implementácii kopírovania reťazca (analógia strcpy) je potrebné najprv vyhradiť dostatok pamäte a potom skopírovať znak po znaku. Lokálne pole vo funkcii však zaniká s jej ukončením, preto prekladač hlási chybu pri vrátení adresy lokálnej premennej. Riešením je dynamická alokácia funkciou malloc zo stdlib.h, ktorej sa zadá veľkosť v bajtoch (počet prvkov krát veľkosť prvku, dĺžku zistí strlen) a ktorá vráti adresu alebo NULL. Zvyšok témy má pokryť uvoľňovanie pamäte, súvisiace problémy a zúbatené a pravouhlé polia.

  • - Operátor = pri reťazcoch kopíruje iba adresu, nie obsah, takže oba smerníky ukazujú na tú istú pamäť.
  • - Skutočné kopírovanie reťazca vyžaduje vyhradiť dostatok pamäte a skopírovať znaky jeden po druhom cyklom.
  • - Lokálny buffer zaniká po skončení funkcie, preto vrátenie jeho adresy je chyba.
  • - Funkcia malloc zo stdlib.h pridelí pamäť, ktorá prežije koniec funkcie.
  • - Veľkosť pre malloc sa počíta ako počet prvkov krát sizeof jedného prvku, dĺžku reťazca zistí strlen.
  • - Ak systém nemá dosť pamäte, malloc vráti NULL, preto treba výsledok kontrolovať.
  • - Na tému nadväzuje uvoľňovanie pamäte, jej problémy a rozdiel medzi zúbatým a pravouhlým poľom.

Zhrnutie pripravené s pomocou AI z prepisu videa.