wygląda na to, że w visualowym STLu w std::list<>::clear mam do czynienia z jakimś bugiem, no chyba, że ja coś źle robię, ale w sumie tu się chyba nie da nawet nic źle robić xd
do rzeczy,
wywołanie clear na jednym z moich kontenerów listy pluje access violationem, kiedyś myślałem że metody clear to się nie da zepsuć, bo niby jak? nie przyjmuje nic z zewnątrz, ale jak zwykle okazuje się, że nie ma rzeczy niemożliwych :>
przyczyna jakaś jest, bo mam 2 kontenery list (poza tym przecież już wiele razy w innych projektach używałem STLowej listy i zawsze dobrze było) i tylko na jednym występuje problem, czyli to jakiś dziwny konkretny przypadek tylko dla tej feralnej jednej listy, przyczyny nie widzę, to raczej nic z zewnątrz, wygląda na to, że wewnętrznie coś źle działa
w dodatku źle działa nie samo clear, tylko to co jest pod #definem _HAS_ITERATOR_DEBUGGING, to pewnie jakiś visualowy wynalazek do debugowania iteratorów, wygląda na to, że sam potrzebuje debugowania
pod Release, gdy _HAS_ITERATOR_DEBUGGING nie jest ustawiony, rzecz jasna clear śmiga, tylko pod Debug, gdy sam nie ustawię #define _HAS_ITERATOR_DEBUGGING 0, problem ma miejsce
zresztą samemu można sobie to z bliska obejrzeć, zamieszczam projekt (do kompilacji wymagany SDK Direct): http://lublin.webd.pl/crayze/Enginev02.zip
ustaliliśmy, że to dzieje się na visualu z sp1, nie wiem jak na innych wersjach (oczywiście nie dotyczy innych IDE, bo ich STLe nie mają konstrukcji _HAS_ITERATOR_DEBUGGING)
chętnych, znających wewnętrzne bebechy visualowego STLa zapraszam do pobrania, ja nie mam zamiaru babrać się w tym, a w sumie ciekawy jestem co jest przyczyną, czy czy to coś z moją klasą, którą przechowuje lista, czy wewnętrznie spierniczony jest _HAS_ITERATOR_DEBUGGING
po otwarciu projektu będzie zaznaczony brakpointem o który clear się rozchodzi