Keresés

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

  • jattila48

    aktív tag

    válasz Teasüti #4153 üzenetére

    "Tehát ami nekem átjött ebből a beszélgetésből, hogy ha new operátorral hozok létre tömböt (foglalok le dinamikus memóriát), akkor az egy ún. heap-re kerül,..."
    Ez igaz.
    "...míg ha new nélkül, akkor a stack-be."
    Ez nem feltétlenül igaz, mert a globális adatterületen is deklarálhatsz tömböt.
    Egyéb gyakorlati jelentősége pedig az, amit eddig leírtam. Röviden összefoglalva:
    - A tömb név nem változó, nem adhatsz neki értéket, és nem képezheted a címét.
    -A pointer változó, ami memória címet tartalmaz (pl. a heapen lefoglalt memória címét, de lehet más pl. "hagyományosan" deklarált tömb címe is). A pointer értéke megváltoztatható, és a címe is képezhető.
    -Tömböt csak konstans méretűt deklarálhatsz (kivéve C99), míg new-val változó méretű memóriát foglalhatsz.
    -Tömböt nem szabad felszabadítani, new-val létrehozott memóriát pedig fel kell szabadítani.
    Kb. ennyi ami gyakorlatban különbség a két fogalom között, és amiről minden programozónak tudnia kell.
    Még egy "apróság": C++ -ban tömb név, mint konstans pointer lehet template argumentum (mivel fordítási időben kiértékelhető), pointer viszont nem (mivel csak futási időben értékelhető ki).

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