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 | Arbeta med Pekare och Strukturer
Behärska C-Strukturer

bookDynamisk 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));
Note
Observera

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

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; }

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.

Uppgift

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:

  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

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

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

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));
Note
Observera

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

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; }

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.

Uppgift

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:

  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

some-alt