- Yettel topik
- Fotók, videók mobillal
- Telekom mobilszolgáltatások
- Google Pixel 10 és 10 Pro összehasonlító gyorsteszt
- A lapkakészlet és az akku különbözteti meg a Motorola Edge 60 és Edge 60 Pro-t
- Android alkalmazások - szoftver kibeszélő topik
- Huawei Watch GT 6 és GT 6 Pro duplateszt
- Megérkeztek a Xiaomi 15T sorozatának telefonjai Magyarországra
- Milyen okostelefont vegyek?
- Kijelző került a kamerasávra a Xiaomi 17 Pro és 17 Pro Max hátulján
Ú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!
- Sapphire Pulse RX 6600 XT - eladó!
- ÚJ DELL XPS 14 9440 PROFI Laptop, -70% 14,5" Ultra 7 155H 12Mag 16/512 FHD+ 120Hz /Millió! Ft/
- Vadonat új garanciás laptopok hihetetlen áron! Szeptember Októberi lista! Razer blade zephyrus
- ÚJ HP ENVY x360 Érintős Hajtogatós Laptop Tab -30% 15,6" AMD RYZEN 7 7730U 8Mag 16/1TB FHD
- 512MB (3db) - 1GB (16db) - 2GB (21db) DDR2 RAM-ok (és RAM-Kitek)
- HIBÁTLAN iPhone 13 Pro Max 128GB Graphite -1 ÉV GARANCIA - Kártyafüggetlen, MS3390, 93% Akkumulátor
- GYÖNYÖRŰ iPhone 14 Pro Max 256GB Space Black -1 ÉV GARANCIA - Kártyafüggetlen, MS3172
- Telefon felváráslás!! Xiaomi Redmi Note 11, Xiaomi Redmi Note 11 Pro, Xiaomi 11 Lite
- Samsung Galaxy S23 Ultra / 8RAM 256GB / Gyárifüggetlen / 12 Hó Garancia
- HPE Apollo 4200 Gen9 2U rack szerver, 1x E5-2620v4, 64GB RAM, 24x3.5" 2U-ban! ÁFA-s számla, garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest