Czasami uzyskać to "Debug Assertion Failed" błąd mojego projektu Qt działa w trybie debugowania (image). Nie wiem, gdzie się mylę, ponieważ kompilator nic nie mówi i nie wiem, co zrobić, aby znaleźć mój błąd.Debug Assertion Failed: _CrtIsValidHeapPointer (pUserData)
Programuję pod Windows Vista, używając Qt Creator 2.4.1, Qt 4.8.1.
Mój program musi przeczytać kilka informacji z urządzenia laserowego i zapisać je do pliku z kodem podobnym do tego:
void runFunction()
{
configure_Scanning(...);
while(...)
{
// do something
scanFunction();
// do something
}
}
i to jest mój „obciążone” function (gdzie myślę, że problem jest)
void scanFunction()
{
file.open();
data = getDataFromDevice();
if(flag)
{
if(QString::compare(lineB,"")!=0)
{
QTextStream out(&file);
out << lineB << endl;
lineB = "";
}
lineA.append(data+"\t");
}
else
{
if(QString::compare(lineA,"")!=0)
{
QTextStream out(&file);
out << lineA << endl;
lineA = "";
}
lineB.prepend(data+"\t");
}
file.close();
}
Gdzie Linea i lineB są początkowo dwa nieważne QString: chodzi o to, że robię dwukierunkowe skanowanie, aby zapisać informacje w matrycy 2D (fro m -X do + X i viceversa, a Y do określonego celu). lineA zapamiętuje czytanie (-) do (+); lineB zapamiętuje czytanie (+) do (-). Kiedy zmienia się kierunek skanowania, piszę lineA (lub liniaB) do pliku i kontynuuję skanowanie.
Czy rozumiesz, co powiedziałem? Czy możesz zaproponować mi rozwiązanie?
Dzięki i przepraszam za mój angielski: P
kliknij przycisk Ponów w oknie dialogowym, aby debugować program, tak jak mówi. Następnie sprawdź stos wywołań lub dodaj go do tego pytania, a powinieneś wiedzieć, co jest nie tak. W sidenote, ciągłe otwieranie i zamykanie pliku prawdopodobnie nie jest potrzebne i powoduje pewne obciążenie. – stijn
Wiem, że otwieranie i zamykanie pliku na każdym etapie nie jest najlepszą strategią, ale muszę to zrobić, aby zapobiec jakiejkolwiek utracie danych w przypadku niespodziewanej przerwy. –
nie jest tym, co robi 'flush()'? – stijn