Hilfe bei Speicherallokierung bitte!



  • hi!

    Ich muss ein Programm mit dynamischer Speicherverwaltung schreiben. Dabei habe ich
    im Hauptprogramm einen Zeiger

    int *zeiger;
    

    definiert. Dieser Zeiger wird dann an ein Unterprogramm

    void calc(int *test)
    

    übergeben:

    calc(zeiger);
    

    In diesem Unterprogramm wird dann der Zeiger test mit:

    test = new int;
    

    initialisiert bzw. der Speicher allokiert.

    Das Problem: Im Unterprogramm wird dann ein Wert in die Adresse von test geschrieben. Nach Beendigung des Unterprogramms steht aber im Zeiger zeiger im Hauptprogramm noch die Adresse NULL.

    Wie muss ich denn den Zeiger übergeben, damit er dann die richtige Adresse erhält?

    Vielen Dank für eure Hilfe!



  • entweder du gibst den zeiger zurück

    int * calc(int *test)
    

    oder du übergibst eien zeiger auf einen zeiger

    ich hoffe du verstehst was ich meine

    mfg



  • einen Zeiger zurückgeben kann ich leider nicht, da diese Funktion noch mehrere Parameter hat, welche ebenfalls Zeiger sind, mit denen ich in etwa das selbe machen muss.

    Einen Zeiger auf einen Zeiger wäre sowas oder?

    void calc(int **test)
    
           calc(&zeiger); //funktionsaufruf
    


  • ja genau
    mfg


Anmelden zum Antworten