assert crtisvalidheappointer

0

Witam
Potrzebuje paru porad jak poardzić sobie z takimi assertami
jak _CrtIsValidHeapPointer(puserData)
pFirstBlock==pHead

Napislem biblioteke dll ktora robi tam pewne obliczenia a pozniej w aplikacji uzywam tej biblioteki wszystko dziala do czasu zamkniecia programu bo wtedy wlasnei wywala mi te asserty.
Jak rozwiazac ten problem
Pisze w VS2008

0

Asserty występują tylko w wersji debug. Żeby naprawić to musisz po prostu wziąć debugger i naprawić błędy w swoim kodzie. Niepowodzenia tych testów oznaczają próbę zwolnienia pamięci pod wskaźnikiem, który obecnie nie wskazuje na zaalokowany blok (strzelam - wielokrotna dealokacja?). Znając życie mogłeś gdzieś w klasie używającej wskaźników zapomnieć o konstruktorze kopiującym lub/i operatorze przypisania, przez co kilka instancji może ten sam pointer zawierać i próbować go wielokrotnie niszczyć.

0

dzięki deus ale problem leżał gdzie indziej zaznaczyłem opcje Multi-threaded Debug DLL (/MDd)</code>i teraz wszystko działa ok

0

Czyli kilka modułów przekazujących sobie obiekty i jeden z nich (albo i wszystkie) ma statyczny runtime? Problem z nim jest taki, że powinien być jeden dla całej aplikacji, każda kopia tworzy własną stertę i beztroskie przerzucanie się odpowiedzialnością nad zwalnianiem wskaźników prowadzi do tego rodzaju błędów - próba zwolnienia wskaźnika przez inną kopię runtime'u, z niewłaściwej sterty.

1 użytkowników online, w tym zalogowanych: 0, gości: 1