Problem z MFC

0

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

0

Chcialbym zobaczyć jak wygląda deklaracja metody, która dostaje wskaźnik do CWordArray i co się tam dzieje oraz kiedy i gdzie jest wywołana... Jakiegoś rzutowania nie masz przypadkiem??

Jeśli w Debugu jest błąd to JEST błąd w programie :-P

Coś Ci się chyba innego dzieje w programie... Prawdopodobnie obiekt już nie istnieje [hipoteza : - ] Wskaźnik powinien wskazywać CWordArray, a nie CObject

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