Mar*_*tti 5 c++ debugging qt assertion
有时我在调试模式(图像)中运行我的Qt项目时出现"Debug Assertion Failed"错误.我不知道我错在哪里,因为编译器没有说什么,我不知道如何找到我的错误.
我使用Qt Creator 2.4.1,Qt 4.8.1在Windows Vista下编程.
我的程序必须从激光设备读取一些信息并将它们保存到一个文件中,其代码类似于:
void runFunction()
{
configure_Scanning(...);
while(...)
{
// do something
scanFunction();
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的"有罪"功能(我认为问题出在哪里)
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();
}
Run Code Online (Sandbox Code Playgroud)
其中lineA和lineB最初是两个void QString:我的想法是我进行双向扫描以在2D矩阵中保存信息(从-X到+ X,反之亦然,而Y到达指定的目标).lineA记忆( - )到(+)读数; lineB记忆(+)到( - )读数.当扫描方向改变时,我将lineA(或lineB)写入文件,然后继续扫描.
你明白我说的话吗?你能建议我一个解决方案吗?
谢谢,对不起我的英文:P
小智 10
_CrtIsValidHeapPointerUserData表示您有一个堆损坏,调试堆检查器会注意到这一点.怀疑每个可以将任何信息写入任何已删除动态对象的人.是的,你会在重写发生时不会立即收到堆腐蚀,但是在下一次堆检查时,将在任何下一次内存分配/释放时执行.但是应该由单线程应用程序中的调用堆栈简单地跟踪.