Ú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!
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Milyen GPS-t vegyek?
- Luck Dragon: Asszociációs játék. :)
- Xbox tulajok OFF topicja
- Fúziós energiát vásárol a Google
- A GravaStar analóg klaviatúráira nem mondható, hogy konformisták volnának
- Több évig húzódó per várhat az Apple-re az iPhone-ok uralma miatt
- PROHARDVER! feedback: bugok, problémák, ötletek
- Battlefield 7
- Mobilinternet
- További aktív témák...
- GIGABYTE Z490M Alaplap
- Playstation 4 500GB Destiny The Taken King Limited Edition
- P16 Gen1 16" FHD+ IPS i7-12850HX RTX A3000 32GB 1TB NVMe ujjlolv gar
- Bomba ár! Dell Latitude 5490 - i5-8GEN I 8GB I 256GB SSD I 14" FHD Touch I HDMI I Cam I W10 I Gari!
- Bomba ár! Dell Latitude 7280 - i7-7GEN I 16GB I 256SSD I 12,5" FHD Touch I Cam I W11 I Garancia!
- Csere-Beszámítás! RTX Számítógép játékra! I7 6700 / RTX 2060 6GB / 32GB DDR4 / 250SSD+500HDD
- Telefon felvásárlás!! iPhone 16/iPhone 16 Plus/iPhone 16 Pro/iPhone 16 Pro Max
- Microsoft Surface Pro 7 - Újszerű, dobozban, gyári töltővel, billentyűzettel
- BESZÁMÍTÁS! HP Elitebook 840 G11 üzleti notebook - Intel Core Ultra 5 135U 16GB DDR5 RAM 256GB W11
- Microsoft Surface Book 3 - 15 col, i7, 32GB, GTX1660Ti
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest