Hirdetés
- VoLTE/VoWiFi
- Apple iPhone 17 - alap
- Realme GT 2 Pro - papírforma
- Yettel topik
- Xiaomi 15T Pro - a téma nincs lezárva
- Motorola Moto G06 Power – nagyfater új zakót vett
- Milyen okostelefont vegyek?
- One mobilszolgáltatások
- Android alkalmazások - szoftver kibeszélő topik
- Samsung Galaxy Watch8 és Watch8 Classic – lelkes hiperaktivitás
Új hozzászólás Aktív témák
-
Karma
félisten
válasz
TheProb
#4387
üzenetére
Az előző álláspontomat szem előtt tartva azért csak kifejtem egy kicsit.
Az alapprobléma az, hogy C-ben és más alacsonyabb szintű nyelveken a memóriakezelést tudatosan kell csinálni, mert nincs az ember alatt védőháló. Mindig tisztában kell lenned azzal, hogy egy adott változó, tömb, karaterlánc hol jön létre, és mikor, ki által fog megsemmisülni. Olyan meg soha nincs, hogy a semmiből memória fakad és pont azt csinálja amit szeretnél.
A mutatott kódodban a romai változódat úgy deklaráltad, hogy egy 20 karakteres tömb, ami a függvényen belül él csak, amint véget ér, felszabadul, te meg nem férhetsz hozzá többet. Ez a sorsa mindennek, ami a stacken jön létre. A befoglaló függvény végén kaputt.
Ilyen minden lokális változó függvényen belül, a függvényeknek átadott paraméterek, az egymás után láncolt függvényhívások köztes eredményei, stb.
Memóriafoglalás tekintetében még két lehetőséged van: a magyar oktatásban "dinamikus memóriának" csúfolt heap; illetve nagyon leegyszerűsítve a "globális változók", a static terület. Utóbbinak inkább ne játssz a gondolatával se.
A programodat azon a két módon lehet megjavítani, amit az előbb is írtam:
1) vagy behozod a heapkezelést és az eredményt oda mented (malloc/free);
2) vagy egy olyan függvényt írsz, mint például az snprintf: a hívó fél gondoskodik arról, hogy legyen hova tenni az eredményt. Javaslom, hogy nézd meg annak a függvénynek a leírását.Ez utóbbi azért különösen jó, mert maga a rómaira átalakító függvényednek nem kell törődnie a memóriakezeléssel egyáltalán. Nem érdekli, hogy a hívója hol foglalt memóriát (stack/heap/static), csak az átalakítással kell törődnie. Nem az ő felelőssége.
Az intes részre nem tudok válaszolni, mert nem sikerült értelmeznem a kérdést.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- The Division 2 (PC, XO, PS4)
- Diablo II: Classic és Resurrected
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- World of Tanks - MMO
- Arc Raiders
- Tőzsde és gazdaság
- Milyen videókártyát?
- LEGO klub
- Kamionok, fuvarozás, logisztika topik
- HiFi műszaki szemmel - sztereó hangrendszerek
- További aktív témák...
- Bomba ár! Dell Vostro 5620 - i5-1240P I 8GB I 256SSD I 16" WUXGA I Cam I W11 I Garancia!
- Bomba ár! Dell Vostro 15 3515 - Ryzen 5 I 8GB I 256SSD I 15,6" FHD I Cam I W11 I Garancia!
- Bomba ár! Lenovo IdeaPad V110 - i5-6GEN I 8GB I 128SSD I 15,6" HD I HDMI I Cam I W10 I Gari!
- Bomba ár! HP Pavilion 15 - i5-4GEN I 8GB I 750GB I 15,6" HD Touch I Cam I W10 I Garancia!
- Bomba ár! Dell Latitude 3190 - Intel N3350 I 4GB I 64-128SSD I 11,6" HD I HDMI I Cam I W11 I Gari!
- Használt számítógépek/merevlemezek számlával, garanciával! Ingyen Foxpost/PostaPont!
- LG UltraGear 34GP63AP-B VA Monitor! 3440x1440 / 160Hz / 1ms / FreeSync
- BESZÁMÍTÁS! Asus Z370A i7 9700 16GB DDR4 512GB SSD RTX 3060 12GB Rampage SHIVA Adata 600W
- ÁRGARANCIA! Épített KomPhone Ultra 9 285K 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Azonnali készpénzes Microsoft XBOX Series S és Series X felvásárlás személyesen/csomagküldéssel
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

