Structs & dynamisch geheugenbeheer - Dynamisch geheugenbeheer

8 belangrijke vragen over Structs & dynamisch geheugenbeheer - Dynamisch geheugenbeheer

Waarop moet je letten als je een adres teruggeeft als resultaat van een functie?

Dat dit niet het adres is van een lokale variabele => want dit geheugenplaatsje verdwijnt na aflopen van de functie

Waarvoor wordt malloc gebruikt? Waarop moet je letten als je malloc gebruikt?

Malloc is een functie die als parameter sizeof(type) verwacht en daarvoor dan een geheugenplaats gereserveert voor 1 variabele van dat type

De functie geeft als resultaat een pointer naar dit gereserveerde plaatsje terug

Na gebruik is het nodig om free(variabele) te noteren zodanig geheugenplaats weer vrijgemaakt wordt

Wat doet de functie calloc?

Geheugen initialiseren op 0 => verwacht 2 parameters
- aantal elementen
- grootte per element  
Handig voor arrays te reserveren en te initialiseren op 0
  • Hogere cijfers + sneller leren
  • Niets twee keer studeren
  • 100% zeker alles onthouden
Ontdek Study Smart

Na elka malloc schrijf je ALTIJD =>

Free(void *pointer)
pointer bekomen met malloc, calloc of realloc

Wat is het voordeel van een array te declareren via malloc tov klassieke manier?

De grootte kan hier namelijk wel een variabele zijn => als paramter meegegeven in mlloc

Vergeet free(pointer) niet na malloc

Hoe kan je n keer een string toevoegen aan een string?

Initialiseer de string met nulkarakter en daarna kan je n keer strcat opvragen

Hoe reserveer je via malloc op een correcte wijze geheugen voor een bepaalde string waarvan grootte nog niet gekend is?

Strlen(string)
MAAR + 1 doen voor nullkarakter!!
en som van beiden vermenigvuldigen met grootte van type

Ik wil in een procedure een c-string van max 80 letters inlezen en opslaan in pointer p. Hoe ga ik te werk? (zie oefening slide 24)

Reserveer array:

char nm[81]; //nullkarakter niet vergeten!

fgets(nm, 81, stdin);

p -> naam = malloc(strlen(nm) + 1) * sizeof(char); //grootte char is 1 byte => maar stel dat ander type zou zijn zeker bij vermelden!!

strcopy(p -> naam, nm};


free pas oproepen in main na oproep functie

De vragen op deze pagina komen uit de samenvatting van het volgende studiemateriaal:

  • Een unieke studie- en oefentool
  • Nooit meer iets twee keer studeren
  • Haal de cijfers waar je op hoopt
  • 100% zeker alles onthouden
Onthoud sneller, leer beter. Wetenschappelijk bewezen.
Trustpilot-logo