Verembe vagy kupacba érdemesebb allokálni az igen/nem értékeimet?
23-as:
bool* bulen = new bool(true);
"De hát a bool 1 byte-ot foglal, nem egy bitet. Vagy a kupacon más tárolási-konvenciók lennének?"
A bool egy biten fér el, mivel az értékkészlete nulla vagy egy. Ez meg egy biten ábrázolható.
A PC-n azonban egy bithez költséges hozzáférni, így a bithez legközelebb eső tárolási egységet, a byte-ot alkalmazzák boolean tipusok tárolására.
De ha sebességkritikus alkalmazást ír valaki mondjuk 32 bites rendszerre, akkor jobb ha saját tipust hoz létre, ami a gépi szóval megegyezik, mert az a leggyorsabb, ugyanis a byte értékéhez egy 32 bites rendszeren költségesebb hozzáférni mint a gépi szóhosszal egyező integer értékéhez.
Ha a sebesség nem fontos, és memória is kevés áll rendelkezésre, mondjuk egy 8 bites rendszeren, akkor kap értelmet az, hogy egy byte-ba nyolc boolean értéket bepakol az ember. Mert ha az alkalmazás igényel mondjuk 80 boolean változót, akkor ahhoz 80 byte helyett elég 10 is. Spóroltunk 70 byte-ot, ami sokszor életmentő lehet.
Köszönöm kérdező:
"bool* bulen = new bool(true);"
Akkor mit látunk itt:
Létrehozol egy pointert. Ez 4 vagy 8 bájt.
És létrehozol egy osztálypéldányt, ami szintén több bájt.
Ez egy tucat bájt azért, hogy heapen tárolj, és ezen felül így felelősséged lett felszabadítani a memóriát, figyelned kell, hogy a pointer mindig valid legyen (felszabadítás után ne legyen elérhető), és ezen felül plusz költség hogy a pointert minden használatkor dereferálni kell (bejárni).
Ha ezután megmondod, hogy miért jobb neked a heap-en, visszaadom a diplomámat, és felmondok a munkahelyemen.
28-as: Kezdjük ott, hogy eleve fogalmam sem volt ilyesmiről, pont ezért tettem fel a kérdést. Egy szóval sem állítottam eddig, hogy a kupacra jobb rakni - de lehet csak a demencia ütött be már megint :/
Szóval igazából azért volt kétséges nekem ez az egész, mert a BME-n a professzorom mindig a kupacba allokál mindent, meg a metódushasználattal sem vagyok túlságosan tisztában, mert a fő-be sűríti szóköz nélkül.
Megnevezed azt a professzort? :D
Mondjuk szerintem sejtem ki az...
Oda jártam én is, kiváncsi vagyok, meg a kontextusra is.
Amúgy nem "haragszom" rád, csak volt pár kérdés-válasz itt közted és mások között, ami alapból felhúzott.
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!