Dynamische Arbeitsspeicherzuweisung in der C-Programmierung

CCBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Beim C-Programmieren wissen wir nicht immer im Voraus die Anfangsgröße eines Arrays. In solchen Fällen verwenden wir die dynamische Arbeitsspeicherzuweisung - ein Verfahren, bei dem der Arbeitsspeicher nur bei Bedarf zugewiesen wird. malloc() ist eine Funktion, die im C-Programmierung verwendet wird, um einen bestimmten Arbeitsspeicherbedarf für ein Array oder eine Variable zuzuweisen, die zur Laufzeit verwendet werden soll. In diesem Lab werden wir lernen, wie man dynamisch Arbeitsspeicher mit malloc() zuweist und dann den Arbeitsspeicherbereich mit free() freigibt.

Hinweis: Sie müssen die Datei ~/project/main.c selbst erstellen, um zu üben und zu lernen, wie man sie mit gcc kompiliert und ausführt.

cd ~/project
## Erstellen Sie main.c
touch main.c
## Kompilieren Sie main.c
gcc main.c -o main
## Führen Sie main aus
./main

Fügen Sie die erforderlichen Headerdateien hinzu

In diesem Schritt werden wir die erforderlichen Headerdateien in unser Programm einfügen.

#include <stdio.h>
#include <stdlib.h>

Definieren Sie die main()-Funktion

In diesem Schritt werden wir die main()-Funktion definieren. In dieser Funktion werden wir die Variablen deklarieren, die das Programm benötigt.

int main()
{
    int n, i, *ptr, sum = 0;

    printf("\nGeben Sie die Anzahl der Elemente ein: ");
    scanf("%d", &n);

Weisen Sie dynamisch Arbeitsspeicher mit malloc() zu

In diesem Schritt werden wir dynamisch Arbeitsspeicher mit malloc() zuweisen. Die Größe des zuzuweisenden Arbeitsspeichers wird durch das Produkt der Anzahl der Elemente und der Größe jedes Elements mit dem sizeof()-Operator bestimmt.

ptr = (int *) malloc(n * sizeof(int));

if(ptr == NULL)
{
    printf("\nFehler! Arbeitsspeicher nicht zugewiesen.");
    exit(0);
}

Speichern Sie Werte im zugewiesenen Arbeitsspeicher

In diesem Schritt werden wir Werte im zugewiesenen Arbeitsspeicher mithilfe einer Schleife speichern.

for(i = 0; i < n; i++)
{
    printf("\nGeben Sie Element %d ein: ", i + 1);
    scanf("%d", ptr + i);
    sum += *(ptr + i);
}

Drucken Sie die Werte

In diesem Schritt werden wir die gespeicherten Werte ausdrucken.

printf("\nEingetragene Elemente sind: ");
for(i = 0; i < n; i++)
{
    printf("%d ", *(ptr + i));
}

Geben Sie den Arbeitsspeicher frei

In diesem Schritt werden wir den zugewiesenen Arbeitsspeicher mit free() freigeben.

free(ptr);

Zusammenfassung

In diesem Lab haben wir gelernt, wie man dynamisch Arbeitsspeicher mit malloc() zuweist und den Arbeitsspeicherplatz mit free() freigibt. Wir haben gelernt, wie man Variablen in der main()-Funktion deklariert und Arbeitsspeicher mit malloc() zuweist. Wir haben auch gelernt, wie man Daten im zugewiesenen Arbeitsspeicherplatz speichert, die gespeicherten Werte druckt und dann den zugewiesenen Arbeitsspeicher mit free() freigibt.