Új hozzászólás Aktív témák

  • WonderCSabo

    félisten

    válasz Dave-11 #2119 üzenetére

    A statikusan lefoglalt változók a veremben kerülnek tárolásra. Ezek a változók csak addig élnek, amíg az a blokk fut, ahol deklarálták őket (pl. fv, vagy ciklus stb.)

    void function() {
    int loc;

    /* műveletek ... */

    /* fv vége */

    /* itt a 'loc' változó felszabadul */
    }

    Ez azt jelenti, hogy amint vége van a blokknak, a memóriaterület, ahol a változó volt tárolva, felszabadul, tehát bmilyen más dologra felhasználhatóvá válik, nem lehet ezt a változót többet legálisan használni.

    Ha dinamikusan foglalod le a memóriát, akkor az a blokk vége után sem szabadul fel, csak akkor, amikor te explicit mondod neki.

    void function() {
    int* a = new int;

    /* itt maga a mutató felszabadul, tehát a változó, ami az újonnan
    lefoglalt érték címét tartalmazza, de maga az újonnan létrehozott érték nem szabadul fel */
    }

    Persze ha itt nem tárolod el vhol az újonann létrehozott objektum címét, akkor sosem fogod tudni manuálisan felszabadítani sem, ezt hívják memory leaknek.

Új hozzászólás Aktív témák