Pascal/Delphi: Dinamikus változók (pointer) tárolása a memóriaterületen, nagyjából értem. A statikus adattárolók tárolása a memórián is hasonló?
Pl egy mutató 4 bájtot foglal mert ugye memóriacímet tartalmat, szegmenscímet és offszetcímet, ehhez 4 bájt kell, és használatkor a memória egy részét érjük el. Ez oké.
Nyilván a statikus létrehozással létrehozott adattárolók is hasonlóan vannak a memóriaterületen ugye?
var static_var : integer;
Viszont az integer változó 2 bájtot foglal (sizeof(), Turbo Pascal) mert a beleírt adatok ilyen hosszan tárolódnak. De magát ezt a változót a memóriaterületen meg is kell jelölni h hol van (memóriacímzéssel ugye?) a memórián, ahhoz azonban ehhez is bájtok kellenek, de ezek hol vannak? És a memória mely területén helyezkednek el? (stack, heap stb).
És ha ezek tisztázódnak akkor ez hogyan változik C++-ban?
long int a;
Nyilván ennél is hasonlóan memóriacím alapján kerül a memóriába?
Köszönöm előre is, Üdv
"Nyilván a statikus létrehozással létrehozott adattárolók is hasonlóan vannak a memóriaterületen ugye?"
Végül is igen.
"Viszont az integer változó 2 bájtot foglal (sizeof(), Turbo Pascal) mert a beleírt adatok ilyen hosszan tárolódnak. De magát ezt a változót a memóriaterületen meg is kell jelölni h hol van (memóriacímzéssel ugye?)"
A static_var változónak a címképző @ operátorral lehet megtudni hogy milyen címen kezdődik. Ennek a címnek a méretét meg sizeof(@static_var)-al lehet lekérdezni.
"És a memória mely területén helyezkednek el? (stack, heap stb). "
Ha globális változó akkor az adatszegmensen, ha lokális akkor a stack-en.
"És ha ezek tisztázódnak akkor ez hogyan változik C++-ban?"
A címképző operátor jele itt az & . A többi ugyanaz.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!