C++ban ha úgy deklarálok egy tömböt hogy int a[5] akkor miért nem akad ki akkor ha a[6]-ra hivatkozok?
Figyelt kérdés
és ennek most 0..5 vagy 1..5 között lehet értéket adni?2014. máj. 31. 17:38
1/7 anonim válasza:
a[0] ... a[4] aminek adhatsz értéket. Kiakadni azért nem fog, mert nem figyeli a túlindexelést.
3/7 A kérdező kommentje:
de jó, köszi
2014. máj. 31. 18:57
4/7 anonim válasza:
A C++ nem figyeli a túlindexelési hibákat, mert a C-vel való kompatibilitás érdekében nem tárolja a tömbök hosszát. Pedig azóta már nem kompatibilis a C-vel, de a régebbi C++ verziókkal a kompatibilitás követelmény. Egészen a C++11-ig, az már nem kompatibilis a régebbi verziókkal. De tömbhosszat ő sem tárol. Használj vectort, ha félsz a túlindexeléstől!
5/7 anonim válasza:
Azért nem, mert az egész egy pointer dereference, nem a tömg hatodik elemét indexeled, hanem egy pointert, amit egy összeadással kaptál.
6/7 iostream válasza:
"Használj vectort, ha félsz a túlindexeléstől!"
Persze a vector sem véd a túlindexeléstől, csak ha az at metódusát használod, az meg kivételt dob, akkor már egyszerűbb biztosra menni és úgy írni a kódot, hogy sose menjen túl a tömbhatáron.
Amúgy meg azért, mert nem a nyelv, a futtatókörnyezet jelzi a hibákat hanem az operációs rendszer. A memóriamenedzser meg egyben lefoglal nagy blokk memóriákat, és ha azon belül maradsz, az oprendszer észre sem veszi. Ha a tömböd ráadásul a stacken van, az egy pár megás folytonos tárterület, megcímezheted akár a[100]-t is.
7/7 A kérdező kommentje:
köszi, bár itt még nagyon nem tartok...
2014. jún. 1. 13:22
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!