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

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