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 == 23if (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