Witam. Mam powazny problem. Moja aplikacja napisana w Vc++6 to aplikacja na szkielecie mfc generowanym przez mfc wizzarda. W klasie dokumentu deklaruje obiekt klasy CWordArray. Wskaznik do tego obiektu przekazuje mojej metodzie zdefiniowanej w klasie dokumentu, nastepnie poslugujac sie tym wskaznikiem
wywoluje metode RemoveAll() klasy CWordArray. I tu zaczynaja sie schody.Podczas sprawdzania asercji wewnatrz metody RemoveAll dostaje blad:
ASSERT_VALID fails with illegal vtable pointer;
testowanie asercji wyglada tak:
// check to make sure the VTable pointer is valid
ASSERT(sizeof(CObject) == sizeof(void*));
if (!AfxIsValidAddress((void**)pOb, sizeof(void), FALSE))
{
TRACE0("ASSERT_VALID fails with illegal vtable pointer.\n");
if (AfxAssertFailedLine(lpszFileName, nLine))
AfxDebugBreak();
return; // quick escape
}
wedlug debuggera zmienna lokalna pOb wskazuje na prawidlowy obiekt klasy CObject, ale blad asercji wystepuje. Zapewniam, ze sprawdzany obiekt nie zostal wczesniej w programie usuniety i ze powinien istniec. problem wystepuje tylko w wersji Debug. W wersji Retail wszystko dziala normalnie. prosze o pomoc