C++-ban hogyan határozom meg egy DINAMIKUS tömb méretét? cout<< (sizeof (a) /sizeof (int) ) ; // ez statikusnál működik de itt nem
A sizeof egy pszeudo operátor, fordítási időbe dől el a "visszatérési" értéke. Paraméterül típust "lát", változó esetén is típust a változó típusát. sizeof (a)-nál ha a egy változó akkor ezt a fordító sizeof (int[40])-re helyettesíti ha a típusa int[40].
Dinamikus tömbnél a dinamikus memóriaterületre mutató pointer méretét adja meg ami 4 (32 bites 4*8 bites processzoron vagy 32 bites módban)
Futási időbe alapból nem tárolja el a program a dinamikusan lefoglat tömb aktuális méretét. A programozónak kell erről gondoskodni, hogy úgy foglaljon hogy tudja hogy mennyit foglalt. Esetleg template-n keresztül foglal memóriát vagy szabadít fel, olyan template-ben ahol meg van valósítva a lefoglalt memória méretének nyilvántartása.
"Futási időbe alapból nem tárolja el a program a dinamikusan lefoglat tömb aktuális méretét."
Ez fura, akkor a new-val létrehozott tömböt a delete hogy tudja felszabadítani? Elvileg az mallocis tudta a méretet, hiszen a free-nek pont azt a területet kellett felszabadítania. Ezért volt veszélyes a free-nek más pointert megadni, mint ami az malloc-nál szerepelt.
Vagy rosszul tudom? :)
De abban egyetértek, hogy nem lehet megtudni. Legjobb ha a létrehozáskor eltároljuk egy változóba.
(13:05 voltam.)
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!