- Sony MILC fényképezőgépcsalád
- ThinkPad (NEM IdeaPad)
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Projektor topic
- Gaming notebook topik
- Szünetmentes tápegységek (UPS)
- NVIDIA GeForce RTX 4080 /4080S / 4090 (AD103 / 102)
- HiFi műszaki szemmel - sztereó hangrendszerek
- Milyen monitort vegyek?
- Azonnali informatikai kérdések órája
Hirdetés
-
Nagy akkumulátor és külső kijelző
ma Ez jellemzi majd a Honor kagylótelefonját, amit kis híján egy éve várunk már.
-
Egy termékcsaládra korlátozza az Auto SR-t a Microsoft
ph Az automatic super resolution még a Qualcomm megoldásain belül is csak egy sorozathoz lesz kötve.
-
Az OpenAI és az AI segít gyógyszereket fejleszteni
it A francia Sanofi összeállt az OpenAI-val, hogy AI segítségével gyorsítsák fel a gyógyszerek fejlesztését.
Új hozzászólás Aktív témák
-
Karma
félisten
válasz Sk8erPeter #1490 üzenetére
Pedig ha azok a fogalmak megvannak, az első kérdésre is könnyebb válaszolni. Persze mindkettő C++ minta (sőt, a második csak és kizárólag Symbian C++-ban van), ezért C-nél még nem kavar be.
Auto pointer: egy olyan objektum, ami ha megsemmisül a stacken, magával ránt egy hozzárendelt heapen lévő objektumot is, így amikor az auto_ptr scope-on kívülre kerül, a másik objektum biztosan megsemmisül. Ez egy egyszerűsítés, így biztosan nem maradhat meg a heapen lévő objektum pl. azért, mert valahova berakott az ember még egy returnt, és elfelejtette felszabadítani ott is a memóriát
Valahogy így néz ki:
int valami()
{
int *valami_int = new int; // heapen hoztam letre, mint a malloc C-ben
auto_ptr<int> valami_ptr(valami_int); // az auto pointerre bizom a felszabaditast
...
// ugy hasznalom, mint egy pointert
*valami_ptr = 5; // a valtozo erteket valtoztatom itt
...
return 0; // valami_ptr megsemmisul -> valami_int is torlodik
...
return 1; // valahol mashol ugyanez lezajlik
}Ha nem lenne ez az auto_ptr, akkor mindkét return elé oda kéne írni explicite a következő sort (ez a free C++-os megfelelője), amit könnyen kifelejthet az ember, ha utólag hackelget bele a függvénybe, memory leaket okozva.
delete valami_int;
Cleanup Stack: Amikor a Symbiant írták, még nagyon fejletlenek voltak a C++ fordítók, kivételdobáskor a stacken lévő objektumokra nem hívódott meg a destruktor, ami mindenféle vicces hibához vezethetett, többek között "csak" memory leakhez. Ezért a nagyokosok kitalálták, hogy "csináljunk saját kivételkezelést!", megalkották a Leave-eket és a Cleanup Stacket.
Minden heapen lefoglalt objektumot, ami nem tagváltozó, fel kell kézzel rakni a CleanupStackre, és persze le is kell venni onnan, ha olyan műveletek jönnek, amik kivételt (konkrétan leave-et) dobhatnak. Tehát mindig figyelni kell a programozónak arra, hogy mikor mi van rajta, mikor melyik objektum kinek a felelősségébe tartozik, és ennek megfelelően variálni.
Na itt jön be, hogy ha több return utasítás van, akkor kitörhet a káosz, a függvény különböző részein más lehet a CleanupStack állapota, minden returnnél megfelelően adminisztrálni kell, és ha bármit változtatni kell, mindenhol át kell írni...
Példakód:
TInt CSomething::DoSomethingL()
{
TInt result = 0;
CSomethingBig *big = CSomethingBig::NewL();
CleanupStack::PushL(big);
RSomethingResource res;
CleanupClosePushL(res);
result = res->DoSomethingDangerousL(big); // ha ez dob egy leave-et, res bezarodik, big megsemmisul
CleanupStack::PopAndDestroy(2, big); // mindket elemet megsemmisiti
return result;
}Ezt a kódot nem magyaráznám túl, ha nem baj, hiszen csak random firkáltam. A lényeg az, hogy a PopAndDestroy hívást minden return előtt meg kell hívni, pontosan.
[ Szerkesztve ]
“All nothings are not equal.”
Ú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!
- Xbox tulajok OFF topicja
- Kerékpárosok, bringások ide!
- Diablo IV
- S.T.A.L.K.E.R.: Shadow of Chernobyl
- Konteó topic
- Gyúrósok ide!
- Céges verziót mutatott be a HMD a Pulse Plusból
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- World of Tanks - OFF topic
- További aktív témák...
- KIEMELT AKCIÓ: iPad Pro 9.7" Rose Gold 32GB wifi (MM172FD/A) kitűnő állapotban szuper áron eladó !!!
- Sony Xperia 10 V eladó ! Használt, sok garanciával.
- 2 év gari: Olcsó DDR5 PC/I5 12400F/16GB/500GB M2/Suprim X RTX 3070/Futár is
- -70% HP EliteBook 850 G7:i7 10610U,32GB RAM,512GB SSD,15.6" FHD,vil.MAGYAR numeri.bill,WWAN 4G,Win11
- ASUS TUF Gaming GeForce RTX 4070 Ti 12GB
Állásajánlatok
Cég: Alpha Laptopszerviz Kft.
Város: Pécs
Cég: Ozeki Kft.
Város: Debrecen