Új hozzászólás Aktív témák
-
Szirty
őstag
válasz
mcwizard
#4110
üzenetére
Üdv mcwizard!
A lokális változók a hívás végén nem törlődnek. A rendszer nem törli őket szándékosan. Ám a tartalmukat nem szabad figyelembe venni a blokkon belül azelőtt, hogy értéket adtunk volna neki.
Az ok rendkívül egyszerű: A lokális változók tartalmát más blokkok lokális változói felülírhatják ha használnak lokális változót illetve ha írják azokat. Így minden blokkban minden lokális változó tartalma lényegében határozatlan, memória szemét van benne. Egyszerűen azért, mert minden blokk ugyanazt a stack-et (memória területet) használja a saját lokális változói tárolására.
Ezért ha csak egyetlen egy blokkod van ami ír egy lokális változót, de a többi blokkban is létrehozol változókat amik így ugyanarra a címre kerülnek, ám azokat nem írod csak olvasod, akkor azt fogod tapasztalni hogy amikor az író blokk megváltoztatja a lokális változó értékét, akkor az a többi blokkban is megváltozik. Illetve az író blokk elején is az az érték van benne amit utoljára beleír.
Ha azonban nem "steril", hanem olyan programban vizsgálnád meg ugyanezt a jelenséget ahol különböző blokkok különböző célra intenzíven használnak különböző belső változókat a saját céljukra (a gyakorlatban minden program ilyen lényegében) akkor gyökeresen mást tapasztalnál.
Ha tehát arra hagyatkozol amit most tapasztaltál, annak vége igen nagy szívás lehet. Ezért nagyon fontos szabály, hogy egy blokkban lokális változót SOHA nem használunk fel azelőtt a blokk lefutásán belül, hogy annak értéket adtunk volna!
Új hozzászólás Aktív témák
- AMD Navi Radeon™ RX 9xxx sorozat
- Motoros topic
- One otthoni szolgáltatások (TV, internet, telefon)
- OnePlus 15 - van plusz energia
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Proxmox VE
- Samsung Galaxy A54 - türelemjáték
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Formula-1
- További aktív témák...
- !AKCIÓ! GAMER PC Intel Core i5-12600KF/ASRock - Z790 PRO RS/D4/MSI RTX 3080 Suprim X 10GB/32 GB DDR4
- 15.gen! Intel Core ULTRA 9 285K (24mag!) +hűtött VRM-es Z890 lap! GAR/SZÁMLA (Te nevedre kiállítva)!
- LENOVO YOGA 9 Pro 14 83BU004BHV
- iPhone 13 - Pink - 128GB - kártyafüggetlen - Akku 90%
- Apple Watch Series 10 GPS+Cellular 46mm, Újszerű, 1 Év Garanciával
- GYÖNYÖRŰ iPhone 11 Pro 64GB Silver -1 ÉV GARANCIA - Kártyafüggetlen, MS3565
- GYÖNYÖRŰ iPhone 14 Pro 128GB Space Black -1 ÉV GARANCIA - Kártyafüggetlen
- BESZÁMÍTÁS! ASUS X670E R7 9800X3D 32GB DDR5 1TB SSD RTX 4080 16GB Lian Li O11 Dynamic EVO RGB 850W
- Samsung Galaxy A20e / 3/32GB / Kártyafüggetlen / 12Hó Garancia
- 210 - Lenovo IdeaPad 5 Pro (16ARH7) - AMD Ryzen 7 6800HS, RTX 3050Ti
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
