- Klaus Duran: 2025 dude
- gban: Ingyen kellene, de tegnapra
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Magga: PLEX: multimédia az egész lakásban
- btz: Internet fejlesztés országosan!
- sh4d0w: Csak a profit - emberélet nem számít
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- RIOS Gépház: Alap vagy Profi? Két új üzleti előfizetés debütál a Hardveraprón!
- sziku69: Szólánc.
Új hozzászólás Aktív témák
-
jattila48
aktív tag
válasz
jattila48 #3190 üzenetére
Közben kicsit jobban belegondoltam, és az igazító kód valószínűleg a többszörös öröklődésből adódó this pointer igazítást is, és az esetleges virtuális fv. híváshoz szükséges vftbl pointer igazítást is elvégzi. Az incomplete BodyClass forward deklaráció miatt a fordító nem látja, hogy a BodyClass *pimpl pointer valójában egy BodyClass-ból publikusan leszármazott osztályra is mutathat, sőt az is lehet, hogy az osztálynak egy másik publikus ősosztálya is van, amitől előbb örököl, mint a BodyClass-tól:
class DescClass : public UnknownClass, public BodyClass{...}
A handle_class.cpp-ben pedig a HandleClass ctor.-a:
HandleClass::HandleClass():pimpl(new DescClass ()){}Ebben az esetben a pimpl valójában az UnknownClass részre mutat (mivel az van előbb az ősök között), és nem a BodyClass részre, ahogy kéne. Ezért ha a DescClass * típusú pointert a pimpl értékül kapja, azt igazítani kell a BodyClass részre (ezt végzi egyébként a thunk kód többszörös öröklődés esetén).
Virtuális tfv. esetén a member function pointer szintén fordítás idejű konstans, azonban nem a tfv. közvetlen címe, hanem a virtuális fv. táblában a rá vonatkozó bejegyzés indexe (ez nem biztos, ezt csak így gondolom). Ezért az esetleges öröklődésből adódó vftbl címet is igazítani kell, mivel a fordító ugye nem látja, hogy a BodyClass valójában egy ebből leszármazott osztállyal példányosult. Az igazító kódban szerintem az első sor
004116D6 cmp dword ptr ds:[4168B4h],0
annak vizsgálata lehet, hogy tfv. virtuális-e. Ha nem, akkor egyszerűen a thunk kód kerül végrehajtásra a linkelési időben kitöltött információk alapján. Ha virtuális, akkor a másik ágban a vftbl. megfelelő beállítása, és a thunk végrehajtása történik. Mivel rossz működés esetén ebben az első utasításban rossz a "globális" cím, ezért gondolom, hogy a linker (vagy a betöltő) ront el valamit. Az, hogy a call ezután indirekt címzéssel történik, arra utal, hogy futási időben dől el, hogy milyen kódrészletet kell végrehajtani (talán maga az esetleges virtuális hívás?). Remélem érthető volt, és elnézést ha kicsit hosszúra nyúlt.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Itthon is elérhető a OnePlus 11 és a Buds Pro 2
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Vezetékes FEJhallgatók
- E-roller topik
- Revolut
- Napelem
- Klaus Duran: 2025 dude
- Android játékok topikja
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- További aktív témák...
- Hobby gamer asztali gép RGB i5-114600/RTX 2060 12GB/32 GB RAM/500 GB NVMe
- Dell Latitude E6540 Erőmű akár Játékra is.15"6 FHD,I7 4800MQ,HD8790,16GBram,500GB sshd,gyári töltö
- HP ELITEBOOK 855 G8 Ryzen 3 5400U 16gb ram 256ssd FHD IPS Gari
- HP ELITEBOOK 850 G8 i5 1145G7/16GB ram 256ssd/FHD
- Újszerű Lenovo Legion 5 - 15,6"FHD IPS - Ryzen 5 5600H - 16GB - 512GB SSD - RTX 3050 - Win11 -MAGYAR
- Lenovo ThinkCentre M720q/ Dell OptiPlex 3060- 3070/ Hp EliteDesk 800 mini, micro PC-Számla/garancia
- Dell latitude, precision, xps, magyar világítós billentyűzetek eladóak
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7600X 16/32/64GB RAM RTX 4060Ti 8GB GAMER PC termékbeszámítással
- Motorola E40 64GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iPhone 14 128Gb Kártyafüggetlen, 1Év Garanciával
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest