Hirdetés
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- ldave: New Game Blitz - 2025
- Magga: PLEX: multimédia az egész lakásban
- Sundesz: 20 éve a PH!-n
- jakra: Retro gyujtemenyem (cloud synced for safety...)
- WireGuard VPN a mindennapokra
Új hozzászólás Aktív témák
-
EQMontoya
veterán
Én is azon gondolkodtam este (némi privát üzenetetek váltását követően), hogy hogyan lehetne ezt kivédeni. Mert ha ctorbab b@ssza el az ember az init sorrendet, arra ugye van warning, egyértelmű user error.
Ezt viszont már nem veszi észre a fordító, mert az a-t inicializálni próbáló fv. dependál b-n.
Tehát warning nem lesz, viszont irgalmatlan szívás igen.Ugye először lehetne még jönni azzal, hogy ctorból nem hívogatunk tagfüggvenyeket, de nem virtuálisakat nyugodtan lehet.
Talán a legnagyobb probléma itt az, hogy a ctor valami olyat próbál csinálni, ami nem teljesen feladata, de ez megint megfoghatatlan.
-
dobragab
addikt
Így van.
Amikor a count_a hívódik, a b adattag még nincs inicializálva, így nettó undefined behaviour.Nálam természetesen a saját allokátortól valamiért (debug mód, vagy OS security, vagy direkt kiszúrásból) kinullázott memóriaterületet kaptam, ami véletlenül az adott implementációban az üres vektor memóriaképével egyezett (count == 0, capacity == 0, data == nullptr)... Ezen frankón lefutott a push_back. Otthon egyébként debug módban crash, release-ben fut.
Az első megoldást választottam, mert a prod kódban ott nem egy sima int van, hanem egy bonyolult, connection állapotot kezelő cucc, rengeteg adattaggal, az egyik konstruktorparaméterére hívtam egy count_a-szerűséget. És még a vektor is csak metaadat, így a tagfüggvényben csak lestem, miért romlik el minden, és a hitem szerint jól inicializált, sehol máshol nem módosított vektorra csak egy nap debugprintf után gondoltam.
Majd beletúrok az allokációba, hogy debug módban írja felül random adattal a memóriaterületet.
Amúgy meg szerintem kéne kérnünk egy SPOILER taget a topikba

-
Hiftu
senior tag
Közben kipróbáltam. Segmentation fault-ot írt ki.

A b.push_back(i)-re hasalt el.
Akkor ötletem nem volt rossz, csak az eredménye: az a inicializálásakor még nincsen b vectorod.Megoldás #1:
Felcseréled az a és b változó sorrendjét.
Ez egy elég gyenge megoldás, több változó esetén szívhatsz vele.Megoldás #2:
Az összefüggő adatok inicializálását kiveszed az inicializálási listából (de szarul hangzik magyarul)
és berakod a constructor függvénytörzsébe.
Ú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!
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- OLED TV topic
- Energiaital topic
- Halls of Torment teszt
- Anime filmek és sorozatok
- Garancia kérdés, fogyasztóvédelem
- Bemutatkozott a Poco X7 és X7 Pro
- Packeta
- Windows 11
- Steam, GOG, Epic Store, Humble Store, Xbox PC Game Pass, Origin Access, uPlay+, Apple Arcade felhasználók barátságos izgulós topikja
- További aktív témák...
- Bontatlan! Új Lenovo Thinkpad T14 G5 Tartós Üzleti Laptop 14" -45% Ultra 7 165U 16/512 FHD+ Magyar!
- Bomba Ár! Fujitsu LifeBook E751 - i5-2GEN I 4GB I 500GB I DVDRW I 15,6" HD I Cam I W10 I Gari!
- Bomba ár! Dell Latitude E6440 - i5-4GEN I 8GB I 256SSD I 14" HD I HDMI I Cam I W10 I Garancia!
- Bomba ár! Dell Latitude E6540 - i5-4GEN I 8GB I 500GB I HDMI I 15,6" HD I Cam I W10 I Garancia!
- Bomba Ár! Lenovo ThinkPad E15 G4 AMD - Ryzen 5 5625U I 8GB I 256SSD I 15,6" FHD I HDMI I W11 I Gari
- Telefon felvásárlás!! iPhone 15/iPhone 15 Plus/iPhone 15 Pro/iPhone 15 Pro Max
- REFURBISHED és ÚJ - Lenovo ThinkPad 40AY Universal USB-C Dock
- ÁRGARANCIA!Épített KomPhone Ryzen 5 4500 16/32/64GB RAM RTX 3050 6GB GAMER PC termékbeszámítással
- GYÖNYÖRŰ iPhone 13 Pro 256GB Sierra Blue - 1 ÉV GARANCIA, Kártyafüggetlen, 100% Akkumulátor,MS3409
- HIBÁTLAN iPhone 14 Plus 128GB Purple -1 ÉV GARANCIA - Kártyafüggetlen, MS3659, 100% Akksi
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: NetGo.hu Kft.
Város: Gödöllő
Amikor a count_a hívódik, a b adattag még nincs inicializálva, így nettó undefined behaviour.

