single
Dynamisch Structuren Toewijzen
Veeg om het menu te tonen
Een overzicht van het dynamisch toewijzen van geheugen in de C-taal.
Voor het toewijzen van geheugen op de heap wordt de malloc()-functie uit de stdlib.h-bibliotheek gebruikt:
<pointer> = (data_type*)malloc(n * sizeof(data_type));
Wanneer geheugen dynamisch wordt toegewezen voor gebruik in het programma, blijft dat geheugen gereserveerd totdat het expliciet wordt vrijgegeven met free().
main.c
12345678910111213141516171819#include <stdio.h> #include <stdlib.h> // structure definition struct Example { int someValue[20]; // int = 4 bytes, 20 * 4 = 80 bytes }; int main() { // allocating memory for Example structure struct Example* pExample = (struct Example*)malloc(sizeof(struct Example)); printf("Allocating memory = %zu bytes\n", sizeof(*pExample)); // freeing memory free(pExample); return 0; }
Als een structuur meerdere velden van verschillende gegevenstypen bevat, zal de compiler de grootte van de velden gelijkmaken zodat de structuur "handig" in het geheugen wordt opgeslagen.
Let na het voltooien van de taak op hoeveel bytes er worden toegewezen voor de structuur met de velden int en char. Dit fenomeen wordt later in deze cursus besproken.
Veeg om te beginnen met coderen
Je moet een Student-structuur aanmaken en dynamisch geheugen ervoor reserveren met de functie malloc().
Je taak is om de structuur te initialiseren met voorbeeldwaarden en een pointer ernaar terug te geven.
Binnen de functie createStudent:
- Gebruik
malloc()om geheugen te reserveren voor één Student-structuur. - Controleer of de toewijzing geslaagd is (zo niet, retourneer
NULL). - Ken een standaardnaam toe met
sprintf()— bijvoorbeeld"Alice Johnson". - Ken een waarde toe aan
age, bijvoorbeeld21. - Ken een waarde toe aan
gpa, bijvoorbeeld3.85. - Retourneer de pointer naar de gereserveerde structuur.
In de functie main:
- Gebruik de functie
free()om het gereserveerde geheugen vrij te geven na gebruik.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.