Dynamisk 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));
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
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.
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:
- Bruk
malloc()for å allokere minne til én Student-struktur. - Sjekk om allokeringen var vellykket (hvis ikke, returner
NULL). - Tildel et standardnavn ved å bruke
sprintf()— for eksempel"Alice Johnson". - Tildel en verdi til
age, for eksempel21. - Tildel en verdi til
gpa, for eksempel3.85. - Returner pekeren til den allokerte strukturen.
I main-funksjonen:
- Bruk
free()-funksjonen for å frigjøre det allokerte minnet etter bruk.
Løsning
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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?
Fantastisk!
Completion rate forbedret til 4.35
Dynamisk 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));
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
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.
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:
- Bruk
malloc()for å allokere minne til én Student-struktur. - Sjekk om allokeringen var vellykket (hvis ikke, returner
NULL). - Tildel et standardnavn ved å bruke
sprintf()— for eksempel"Alice Johnson". - Tildel en verdi til
age, for eksempel21. - Tildel en verdi til
gpa, for eksempel3.85. - Returner pekeren til den allokerte strukturen.
I main-funksjonen:
- Bruk
free()-funksjonen for å frigjøre det allokerte minnet etter bruk.
Løsning
Takk for tilbakemeldingene dine!
single