- Milyen házat vegyek?
- Milyen billentyűzetet vegyek?
- A karmos/ujjbegyes fogásokkal nyomulók örömére megjött az Arye szénszálas egere
- Mi történik a szemeddel, ha napi 8 órát monitort nézel? | Orvos válaszol
- Épített vízhűtés (nem kompakt) topic
- Milyen TV-t vegyek?
- OLED TV topic
- Gaming notebook topik
- A Synology visszatáncolt a saját márkás HDD-k megköveteléséből
- Házimozi belépő szinten
Ú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!
- Parci: Milyen mosógépet vegyek?
- Trollok komolyan
- Kerékpárosok, bringások ide!
- Milyen házat vegyek?
- Apple Watch
- Apple Watch Ultra - első nekifutás
- PlayStation 5
- Milyen billentyűzetet vegyek?
- A karmos/ujjbegyes fogásokkal nyomulók örömére megjött az Arye szénszálas egere
- Mi történik a szemeddel, ha napi 8 órát monitort nézel? | Orvos válaszol
- További aktív témák...
- Samsung Galaxy Z Flip 6
- LG OLED 65C1 165CM OLED CSÚCS GAMER TV. GARANCIÁLIS 2027-ig!
- Eladó használt szép állapotú ASUS TUF Gaming F15 FX506HC-HN1135W Notebook Termékcsalád Asus TUF Gam
- Samsung Galaxy A36 5G / 6/128GB / Kártyafüggetlen / 12Hó Garancia / BONTATLAN
- Samsung Galaxy A56 5G / 8/256GB / Kártyafüggetlen / 12Hó Garancia / BONTATLAN
- Dell Latitude 7440 -14"FHD+1 IPS - i5-1345U 16GB - 512GB - Win11 - 1 év garancia + Dokkoló + 240W DC
- ÁRGARANCIA!Épített KomPhone i5 10400F 16/32GB RAM RX 7600 8GB GAMER PC termékbeszámítással
- REFURBISHED és ÚJ - HP USB-C/A Universal Dock G2 docking station (5TW13AA) (DisplayLink)
- Patika hibátlan Iphone 14 PRO MAX 128GB Független - Dark Purple - 5 Mobilxof tok + Üvegfolia
- 2025.10.02 - Frissített lista - Lenovo LOQ / LEGION Pro , Yoga Pro (RTX 4060 / 4070 / 4080 / 4090)
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest