Keresés

Új hozzászólás Aktív témák

  • dobragab

    addikt

    válasz Hiftu #3838 üzenetére

    Í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 :)

Új hozzászólás Aktív témák