Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Dynamische Allokation von Structs | Arbeiten mit Zeigern und Strukturen
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
C-Strukturen Meistern

bookDynamische Allokation von Structs

Überblick über die dynamische Speicherzuweisung in der Programmiersprache C.

Zur Zuweisung von Speicher auf dem Heap wird die Funktion malloc() aus der Bibliothek stdlib.h verwendet:

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

Dynamisch zugewiesener Speicher bleibt reserviert, bis er explizit mit free() wieder freigegeben wird.

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

Wenn eine Struktur mehrere Felder mit unterschiedlichen Datentypen enthält, wird der Compiler die Größe der Felder anpassen, sodass die Struktur "bequem" im Speicher abgelegt werden kann.

Nach Abschluss der Aufgabe sollte darauf geachtet werden, wie viele Bytes für die Struktur mit den Feldern int und char reserviert werden. Dieses Phänomen wird später in diesem Kurs noch behandelt.

Aufgabe

Swipe to start coding

Sie sollen eine Student-Struktur erstellen und dynamisch Speicher dafür mit der Funktion malloc() reservieren.
Ihre Aufgabe ist es, die Struktur mit Beispielwerten zu initialisieren und einen Zeiger darauf zurückzugeben.

Innerhalb der Funktion createStudent:

  1. Verwenden Sie malloc(), um Speicher für eine Student-Struktur zu reservieren.
  2. Überprüfen Sie, ob die Speicherreservierung erfolgreich war (falls nicht, geben Sie NULL zurück).
  3. Weisen Sie einen Standardnamen mit sprintf() zu — zum Beispiel "Alice Johnson".
  4. Weisen Sie einen Wert für age zu, beispielsweise 21.
  5. Weisen Sie einen Wert für gpa zu, beispielsweise 3.85.
  6. Geben Sie den Zeiger auf die reservierte Struktur zurück.

In der Funktion main:

  1. Verwenden Sie die Funktion free(), um den reservierten Speicher nach der Nutzung freizugeben.

Lösung

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 4
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

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

bookDynamische Allokation von Structs

Swipe um das Menü anzuzeigen

Überblick über die dynamische Speicherzuweisung in der Programmiersprache C.

Zur Zuweisung von Speicher auf dem Heap wird die Funktion malloc() aus der Bibliothek stdlib.h verwendet:

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

Dynamisch zugewiesener Speicher bleibt reserviert, bis er explizit mit free() wieder freigegeben wird.

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

Wenn eine Struktur mehrere Felder mit unterschiedlichen Datentypen enthält, wird der Compiler die Größe der Felder anpassen, sodass die Struktur "bequem" im Speicher abgelegt werden kann.

Nach Abschluss der Aufgabe sollte darauf geachtet werden, wie viele Bytes für die Struktur mit den Feldern int und char reserviert werden. Dieses Phänomen wird später in diesem Kurs noch behandelt.

Aufgabe

Swipe to start coding

Sie sollen eine Student-Struktur erstellen und dynamisch Speicher dafür mit der Funktion malloc() reservieren.
Ihre Aufgabe ist es, die Struktur mit Beispielwerten zu initialisieren und einen Zeiger darauf zurückzugeben.

Innerhalb der Funktion createStudent:

  1. Verwenden Sie malloc(), um Speicher für eine Student-Struktur zu reservieren.
  2. Überprüfen Sie, ob die Speicherreservierung erfolgreich war (falls nicht, geben Sie NULL zurück).
  3. Weisen Sie einen Standardnamen mit sprintf() zu — zum Beispiel "Alice Johnson".
  4. Weisen Sie einen Wert für age zu, beispielsweise 21.
  5. Weisen Sie einen Wert für gpa zu, beispielsweise 3.85.
  6. Geben Sie den Zeiger auf die reservierte Struktur zurück.

In der Funktion main:

  1. Verwenden Sie die Funktion free(), um den reservierten Speicher nach der Nutzung freizugeben.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 4
single

single

some-alt