Dynamisk Allokering av Strukturer
Låt oss gå igenom hur man dynamiskt allokerar minne i C-språket.
För att allokera minne på heapen, använd funktionen malloc() från biblioteket stdlib.h:
<pointer> = (data_type*)malloc(n * sizeof(data_type));
När du dynamiskt allokerar minne för användning i ditt program, förblir det minnet reserverat tills du uttryckligen frigö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; }
Om en struktur innehåller flera fält av olika datatyper, kommer kompilatorn att utjämna storleken på fälten så att strukturen lagras "bekvämt" i minnet.
Efter att arbetet är slutfört, uppmärksamma hur många byte som tilldelas för strukturen med fälten int och char. Detta fenomen kommer att diskuteras senare i denna kurs.
Swipe to start coding
Du behöver skapa en Student-struktur och dynamiskt allokera minne för den med hjälp av funktionen malloc().
Din uppgift är att initiera strukturen med exempelvärden och returnera en pekare till den.
Inuti funktionen createStudent:
- Använd
malloc()för att allokera minne för en Student-struktur. - Kontrollera om allokeringen var lyckad (om inte, returnera
NULL). - Tilldela ett standardnamn med
sprintf()— till exempel"Alice Johnson". - Tilldela ett värde för
age, till exempel21. - Tilldela ett värde för
gpa, till exempel3.85. - Returnera pekaren till den allokerade strukturen.
I funktionen main:
- Använd funktionen
free()för att frigöra det allokerade minnet efter användning.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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?
Fantastiskt!
Completion betyg förbättrat till 4.35
Dynamisk Allokering av Strukturer
Svep för att visa menyn
Låt oss gå igenom hur man dynamiskt allokerar minne i C-språket.
För att allokera minne på heapen, använd funktionen malloc() från biblioteket stdlib.h:
<pointer> = (data_type*)malloc(n * sizeof(data_type));
När du dynamiskt allokerar minne för användning i ditt program, förblir det minnet reserverat tills du uttryckligen frigö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; }
Om en struktur innehåller flera fält av olika datatyper, kommer kompilatorn att utjämna storleken på fälten så att strukturen lagras "bekvämt" i minnet.
Efter att arbetet är slutfört, uppmärksamma hur många byte som tilldelas för strukturen med fälten int och char. Detta fenomen kommer att diskuteras senare i denna kurs.
Swipe to start coding
Du behöver skapa en Student-struktur och dynamiskt allokera minne för den med hjälp av funktionen malloc().
Din uppgift är att initiera strukturen med exempelvärden och returnera en pekare till den.
Inuti funktionen createStudent:
- Använd
malloc()för att allokera minne för en Student-struktur. - Kontrollera om allokeringen var lyckad (om inte, returnera
NULL). - Tilldela ett standardnamn med
sprintf()— till exempel"Alice Johnson". - Tilldela ett värde för
age, till exempel21. - Tilldela ett värde för
gpa, till exempel3.85. - Returnera pekaren till den allokerade strukturen.
I funktionen main:
- Använd funktionen
free()för att frigöra det allokerade minnet efter användning.
Lösning
Tack för dina kommentarer!
single