Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Dynamisk Allokering af Structs | Arbejde med Pointere og Structs
Beherskelse af C Structs

bookDynamisk Allokering af Structs

Lad os gennemgå, hvordan man dynamisk allokerer hukommelse i C-sproget.

For at allokere hukommelse på heapen anvendes malloc()-funktionen fra stdlib.h-biblioteket:

<pointer> = (data_type*)malloc(n * sizeof(data_type));
Note
Bemærk

Når du dynamisk allokerer hukommelse til brug i dit program, forbliver denne hukommelse reserveret, indtil du eksplicit frigiver den med 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; }

Hvis en struktur indeholder flere felter af forskellige datatyper, vil compileren udligne størrelsen på felterne, så strukturen bliver "praktisk" lagret i hukommelsen.

Efter det udførte arbejde, læg mærke til hvor mange bytes der allokeres til strukturen med felterne int og char. Dette fænomen vil blive diskuteret senere i dette kursus.

Opgave

Swipe to start coding

Du skal oprette en Student-struktur og dynamisk allokere hukommelse til den ved hjælp af funktionen malloc().
Din opgave er at initialisere strukturen med eksempelværdier og returnere en pointer til den.

Inde i funktionen createStudent:

  1. Brug malloc() til at allokere hukommelse til én Student-struktur.
  2. Kontroller om allokeringen var vellykket (hvis ikke, returnér NULL).
  3. Tildel et standardnavn ved hjælp af sprintf() — for eksempel "Alice Johnson".
  4. Tildel en værdi til age, såsom 21.
  5. Tildel en værdi til gpa, såsom 3.85.
  6. Returnér pointeren til den allokerede struktur.

I funktionen main:

  1. Brug funktionen free() til at frigive den allokerede hukommelse efter brug.

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 4
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

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

bookDynamisk Allokering af Structs

Stryg for at vise menuen

Lad os gennemgå, hvordan man dynamisk allokerer hukommelse i C-sproget.

For at allokere hukommelse på heapen anvendes malloc()-funktionen fra stdlib.h-biblioteket:

<pointer> = (data_type*)malloc(n * sizeof(data_type));
Note
Bemærk

Når du dynamisk allokerer hukommelse til brug i dit program, forbliver denne hukommelse reserveret, indtil du eksplicit frigiver den med 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; }

Hvis en struktur indeholder flere felter af forskellige datatyper, vil compileren udligne størrelsen på felterne, så strukturen bliver "praktisk" lagret i hukommelsen.

Efter det udførte arbejde, læg mærke til hvor mange bytes der allokeres til strukturen med felterne int og char. Dette fænomen vil blive diskuteret senere i dette kursus.

Opgave

Swipe to start coding

Du skal oprette en Student-struktur og dynamisk allokere hukommelse til den ved hjælp af funktionen malloc().
Din opgave er at initialisere strukturen med eksempelværdier og returnere en pointer til den.

Inde i funktionen createStudent:

  1. Brug malloc() til at allokere hukommelse til én Student-struktur.
  2. Kontroller om allokeringen var vellykket (hvis ikke, returnér NULL).
  3. Tildel et standardnavn ved hjælp af sprintf() — for eksempel "Alice Johnson".
  4. Tildel en værdi til age, såsom 21.
  5. Tildel en værdi til gpa, såsom 3.85.
  6. Returnér pointeren til den allokerede struktur.

I funktionen main:

  1. Brug funktionen free() til at frigive den allokerede hukommelse efter brug.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 4
single

single

some-alt