Dynamisch Structuren Toewijzen
Laten we bekijken hoe je dynamisch geheugen toewijst in de C-taal.
Om geheugen op de heap toe te wijzen, gebruik je de malloc() functie uit de stdlib.h bibliotheek:
<pointer> = (data_type*)malloc(n * sizeof(data_type));
Wanneer je dynamisch geheugen toewijst voor gebruik in je programma, blijft dat geheugen gereserveerd totdat je het expliciet vrijgeeft 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 verschijnsel wordt later in deze cursus besproken.
Swipe to start coding
Je moet een Student-structuur aanmaken en dynamisch geheugen ervoor reserveren met de functie malloc().
Je opdracht 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.
Can you explain why the compiler equalizes the size of structure fields?
How do I check the size of a structure in C?
What happens if I forget to free dynamically allocated memory?
Geweldig!
Completion tarief verbeterd naar 4.35
Dynamisch Structuren Toewijzen
Veeg om het menu te tonen
Laten we bekijken hoe je dynamisch geheugen toewijst in de C-taal.
Om geheugen op de heap toe te wijzen, gebruik je de malloc() functie uit de stdlib.h bibliotheek:
<pointer> = (data_type*)malloc(n * sizeof(data_type));
Wanneer je dynamisch geheugen toewijst voor gebruik in je programma, blijft dat geheugen gereserveerd totdat je het expliciet vrijgeeft 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 verschijnsel wordt later in deze cursus besproken.
Swipe to start coding
Je moet een Student-structuur aanmaken en dynamisch geheugen ervoor reserveren met de functie malloc().
Je opdracht 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