本人学生,正在独立做一个大作业,现在用到了QList,个别时候会出问题,经过一步一步调试发现了在于有时候new一个变量,则与其完全无关的qlist中的指针变量会有某一个变成空指针。
简略后的具体如下(类有POLYGON,NODE,ARC)
class POLYGON
{
public:
QList<*ARC>* ArcList;
void function()
{
NODE *node1, *node2, *node3, *node4, *node5;
if(ArcList->count()>4)
{
node1 = ArcList->at(4)->BeginNode;
node2 = ArcList->at(4)->BeginNode;
node3 = node1;
}
NODE *x = new NODE();////////////////////////////////////////////////去掉这一行的话就没问题,加上就有问题
if(ArcList->count()>4)
{
node4 = ArcList->at(4)->BeginNode;
node5 = node1;
}
………………
………………
}
}
只是程序中的一小部分稍微改变以后做得一个测试,但是这块儿就让我很迷惑了。如果新开辟一个变量NODE* x,则能正常跑,而如果开辟了的话,ArcList->at(4)的值就发生变化了,变成一个空指针了。这里边的node4的值也同样变了,但node1 node2 node3 node5的值都和ArcList变化之前的值一样。异常的时候node1 node2 node3 node4 node5的值如图片所示。
多谢指教!!