variablenfrage



  • was ist eigentlich der unterschied zwischen

    if (a == 0)
    {
    int a;
    }
    
    if (a== 1)
    {
    ...
    }
    

    und

    if (a == 0)
    {
    int *b = new int;
    }
    
    ...
    

    ?

    ist eine bedingt variable nicht das gleiche wie eine new variable?



  • der unterschied ist, dass das zwei völlig unterschiedliche stücke code sind 😉

    int a = 23;
    if (a == 23)
    {
    int a = 42; // lokale variable a wird definiert.
    }
    // ab hier hat ist die lokale variable nicht mehr gültig, a == 23
    
    if (a == 0)
    {
    int *b = new int; // b wird reserviert
    }
    // b ist nicht mehr verfügbar, der speicher ist trotzdem noch reserviert. speicherleck
    


  • aber ich meine wenn ich jetzt zb einen neuen benutzer in eine datenbank einfügen will, dann kann ich es auf beide methoden machen... ich sehe keinen vorteil bei new



  • Hallo

    doch. Der Unterschied ist, das hier

    if (b == 0)
    {
    int a;
    }
    

    die Variable a mitsamt zugehörigen Speicher sofort ihre Gültigkeit verliert, wenn die schließende Klammer erreicht wird.

    Hier hingegen

    if (a == 0)
    {
    int *b = new int; // b wird reserviert
    }
    

    wird zwar der Pointer b bei den Klammern ungültig, nicht aber der reservierte Speicher. In diesem speziellen Fall erzeugt das ein Speicherloch, weil der reservierte Speicher nirgendwo mehr referenziert wird. Aber grundsätzlich ist der Spcierbereich noch reserviert und benutzbar.

    bis bald
    akari


Anmelden zum Antworten