Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Dynamisk Allokering av Strukturer | Arbeide med Pekere og Strukturer
Mestre C-strukturer

bookDynamisk Allokering av Strukturer

La oss gå gjennom hvordan man dynamisk allokerer minne i C-språket.

For å allokere minne på heapen, bruk malloc()-funksjonen fra stdlib.h-biblioteket:

<pointer> = (data_type*)malloc(n * sizeof(data_type));
Note
Merk

Når du dynamisk allokerer minne for bruk i programmet ditt, forblir dette minnet reservert til du eksplisitt frigjør det 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 inneholder flere felt med forskjellige datatyper, vil kompilatoren utjevne størrelsen på feltene slik at strukturen blir "praktisk" lagret i minnet.

Etter at oppgaven er fullført, legg merke til hvor mange byte som er allokert for strukturen med feltene int og char. Dette fenomenet vil bli diskutert senere i dette kurset.

Oppgave

Swipe to start coding

Du skal opprette en Student-struktur og dynamisk allokere minne for den ved å bruke malloc()-funksjonen.
Oppgaven din er å initialisere strukturen med eksempelverdier og returnere en peker til den.

Inne i createStudent-funksjonen:

  1. Bruk malloc() for å allokere minne til én Student-struktur.
  2. Sjekk om allokeringen var vellykket (hvis ikke, returner NULL).
  3. Tildel et standardnavn ved å bruke sprintf() — for eksempel "Alice Johnson".
  4. Tildel en verdi til age, for eksempel 21.
  5. Tildel en verdi til gpa, for eksempel 3.85.
  6. Returner pekeren til den allokerte strukturen.

I main-funksjonen:

  1. Bruk free()-funksjonen for å frigjøre det allokerte minnet etter bruk.

Løsning

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 4
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

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 av Strukturer

Sveip for å vise menyen

La oss gå gjennom hvordan man dynamisk allokerer minne i C-språket.

For å allokere minne på heapen, bruk malloc()-funksjonen fra stdlib.h-biblioteket:

<pointer> = (data_type*)malloc(n * sizeof(data_type));
Note
Merk

Når du dynamisk allokerer minne for bruk i programmet ditt, forblir dette minnet reservert til du eksplisitt frigjør det 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 inneholder flere felt med forskjellige datatyper, vil kompilatoren utjevne størrelsen på feltene slik at strukturen blir "praktisk" lagret i minnet.

Etter at oppgaven er fullført, legg merke til hvor mange byte som er allokert for strukturen med feltene int og char. Dette fenomenet vil bli diskutert senere i dette kurset.

Oppgave

Swipe to start coding

Du skal opprette en Student-struktur og dynamisk allokere minne for den ved å bruke malloc()-funksjonen.
Oppgaven din er å initialisere strukturen med eksempelverdier og returnere en peker til den.

Inne i createStudent-funksjonen:

  1. Bruk malloc() for å allokere minne til én Student-struktur.
  2. Sjekk om allokeringen var vellykket (hvis ikke, returner NULL).
  3. Tildel et standardnavn ved å bruke sprintf() — for eksempel "Alice Johnson".
  4. Tildel en verdi til age, for eksempel 21.
  5. Tildel en verdi til gpa, for eksempel 3.85.
  6. Returner pekeren til den allokerte strukturen.

I main-funksjonen:

  1. Bruk free()-funksjonen for å frigjøre det allokerte minnet etter bruk.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 4
single

single

some-alt