Hirdetés
- Android dual SIM okostelefonok
- Újra növekedést mutat az okosórák piaca
- Samsung Galaxy S23 Ultra - non plus ultra
- Google Pixel topik
- Xiaomi 15 - kicsi telefon nagy energiával
- Bemutatkozott a Poco X7 és X7 Pro
- iPhone topik
- Xiaomi 11 Lite 5G NE (lisa)
- Motorola Edge 40 - jó bőr
- Poco F7 Pro - jó, de az amatőr sem rossz
Ú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!
- Dell Inspiron 15 5518 /11.gen i5-11300H 24GB ram/512 GB SSD FHD
- Thinkpad X13 Gen4 13.3" FHD+ IPS i7-1365U 16GB 512GB NVMe ujjlolv gar
- Lenovo ThinkBook 14 i5-1135G7 16gb ram 512 SSD FHD IPS
- BOMBA ÁR! új Hp Envy x360 garanciával! /2in1/Ryzen5-5500U/8GB/512 SSD/FHD/TOUCH/GARI
- XPS 9310 13.4" FHD+ IPS i7-1185G7 16GB 512GB NVMe ujjlolv IR kam gar
- GYÖNYÖRŰ iPhone 13 256GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3205
- AKCIÓ! AMD Ryzen 7 3800X 8mag 16szál processzor garanciával hibátlan működéssel
- Logitech G513 Carbon Tactile DE (3)
- Telefon felvásárlás!! Samsung Galaxy A22/Samsung Galaxy A23/Samsung Galaxy A25/Samsung Galaxy A05s
- Lenovo ThinkPad T15 Gen 2 Intel Core i5-1135G7
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest