Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Dynamisch Structuren Toewijzen | Werken met Pointers en Structs
C-Structs Beheersen

bookDynamisch 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));
Note
Opmerking

Wanneer je dynamisch geheugen toewijst voor gebruik in je programma, blijft dat geheugen gereserveerd totdat je het expliciet vrijgeeft met free().

main.c

main.c

copy
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.

Taak

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:

  1. Gebruik malloc() om geheugen te reserveren voor één Student-structuur.
  2. Controleer of de toewijzing geslaagd is (zo niet, retourneer NULL).
  3. Ken een standaardnaam toe met sprintf() — bijvoorbeeld "Alice Johnson".
  4. Ken een waarde toe aan age, bijvoorbeeld 21.
  5. Ken een waarde toe aan gpa, bijvoorbeeld 3.85.
  6. Retourneer de pointer naar de gereserveerde structuur.

In de functie main:

  1. Gebruik de functie free() om het gereserveerde geheugen vrij te geven na gebruik.

Oplossing

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 4
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Suggested prompts:

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?

close

bookDynamisch 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));
Note
Opmerking

Wanneer je dynamisch geheugen toewijst voor gebruik in je programma, blijft dat geheugen gereserveerd totdat je het expliciet vrijgeeft met free().

main.c

main.c

copy
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.

Taak

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:

  1. Gebruik malloc() om geheugen te reserveren voor één Student-structuur.
  2. Controleer of de toewijzing geslaagd is (zo niet, retourneer NULL).
  3. Ken een standaardnaam toe met sprintf() — bijvoorbeeld "Alice Johnson".
  4. Ken een waarde toe aan age, bijvoorbeeld 21.
  5. Ken een waarde toe aan gpa, bijvoorbeeld 3.85.
  6. Retourneer de pointer naar de gereserveerde structuur.

In de functie main:

  1. Gebruik de functie free() om het gereserveerde geheugen vrij te geven na gebruik.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 4
single

single

some-alt