Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Dynamisk Allokering av Strukturer | Arbete med Pekare och Strukturer
C-Strukturer
Avsnitt 2. Kapitel 4
single

single

Dynamisk Allokering av Strukturer

Svep för att visa menyn

En genomgång av hur man dynamiskt allokerar minne i C-språket.

För att allokera minne på heapen används funktionen malloc() från biblioteket stdlib.h:

<pointer> = (data_type*)malloc(n * sizeof(data_type));
sizeof+struct
Note
Notera

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

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 uppgiften är klar, 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.

Uppgift

Svep för att börja koda

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:

  1. Använd malloc() för att allokera minne för en Student-struktur.
  2. Kontrollera om allokeringen var lyckad (om inte, returnera NULL).
  3. Tilldela ett standardnamn med sprintf() — till exempel "Alice Johnson".
  4. Tilldela ett värde för age, till exempel 21.
  5. Tilldela ett värde för gpa, till exempel 3.85.
  6. Returnera pekaren till den allokerade strukturen.

I funktionen main:

  1. Använd funktionen free() för att frigöra det allokerade minnet efter användning.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 4
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

some-alt