Allokierter Speicher nur im block-scope gültig?



  • Hi,
    also ich wüsste gerne ob allokierter Speicher nur in der Funktion in der er reserviert wird gültig ist, ich dachte nämlich er wäre generell überall gültig.
    Bsp.:

    #include <iostream>
    using namespace std;
    
    void function (char* str)
    {
         str = new char[4];
         strcpy( str, "Haus" );
         cout << str << endl;
    }
    
    int main ()
    {
        char* str = 0;
        function( str );
        cout << str << endl; // str ist immernoch gleich 0
        delete str;
    
        return 0;
    }
    


  • solltest eine referenz auf den zeiger übergeben!

    Edit: und wissen das "Haus" ein char[5] braucht...



  • #define retrun return
    #include <iostream>
    using namespace std;
    
    char* function ()
    {
         char* str = new char[5];
         strcpy( str, "Haus" );
         cout << str << endl;
         retrun str;
    }
    
    int main ()
    {
        char* str = function();
        cout << str << endl;
        delete str;
    
        retrun 0;
    }
    


  • Die Funktion könnte den char* auch zurückgeben.
    [edit]Dar war ich wohl zu spät.[edit]



  • Der allokierte speicher ist überall gültig, aber du benötigst ja die addresse die hast du nur dort wo deine zeigervariable gültig ist.
    Drum funktioniert dein code nicht da main ja die addresse nicht hat.

    mfg tobZel


Anmelden zum Antworten