Tutorial 1_23

Dynamische Speicherverwaltung

______________________________________________________________________
// 1_23 Dynamische Speicherverwaltung

#include <stdio.h>

void main(void)
{
    float* pZeiger = new float;
    /* pZeiger keine neue Adresse zuweisen, solange nicht der Speicher wieder
    freigegeben wurde, da er sonst nicht mehr freigegeben werden kann */
    if(NULL == pZeiger)
        printf("Kein Speicher mehr auf dem Heap frei\n");
    scanf("%f", &*pZeiger);
    printf("Die Zahl lautet %f\n", *pZeiger);
    printf("Wie viele Zahlen wollen sie eingeben?\n");
    int Menge;
    scanf("%d", &Menge);
    if(Menge > 0)
    {
        int* pArray = new int[Menge];
        if(NULL == pArray)
            printf("Kein Speicher mehr auf dem Heap frei\n");
        printf("Geben sie die Zahlen nun ein\n");
        for(int zaehler=0;zaehler<Menge;zaehler++)
            scanf("%d", &pArray[zaehler]);
        printf("Ihre Zahlen lauten:\n");
        for(zaehler=0;zaehler<Menge;zaehler++)
            printf("%d\n", pArray[zaehler]);
        delete[] pArray;
        pArray = 0;
    }
    delete pZeiger; // Speicherbereich wird freigegeben, aber Zeiger zeigt weiter darauf
    pZeiger = 0; // jetzt zeigt er nicht mehr auf die inzwischen ungültige Adresse
}
______________________________________________________________________
Zurück