Dynamische Arbeitsspeicherzuweisung in der C-Programmierung

CBeginner
Jetzt üben

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 Header-Dateien 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);

Zuweisen Sie dynamisch Arbeitsspeicher mit malloc()

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.