在Qt上用链表进行队列的出入队操作,当需要处理的数据量比较大的时候,程序会在某次入队的为指针分配内存处中断
void Queue::enqueue(const QPoint xy,const QPoint dad){
Point* point_ ;
point_=new Point;
point_->fatherpoint=dad;
point_->xy=xy;
point_->next=nullptr;
if(isEmpty()){
front=rear=point_;
}else{
rear->next=point_;
rear=point_;
}
}
这是一个链表的入队操作,Point是我自定义的一个类,每次程序都会在point_=new Point;这行中断。这个入队操作的point_指针是没法delete的,因为尾节点和point_指针指向同一处内存。但是当我需要调用这个函数的次数变多的时候,就会中断。我想知道具体的原因以及解决办法。
我看有博客写的是多次用同一个指针开辟内存会导致问题https://blog.csdn.net/sieyoo/article/details/51105396。但是就算我改成建立一个可扩容的指针数组来每次初始化数组中的不同指针最终也会在qarraydata.cpp的headerSize > size_t(MaxAllocSize)和QArrayData *header = static_cast<QArrayData *>(::malloc(allocSize));这两行中断。所以说有没有人能给出一个切实可行的解决方案啊