Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在双向队列中写入访问冲突 我试图用C++创建一个双面队列。 我正在使用Visual Studio 2012并不断获得:_C++_Queue_Visual Studio 2012 - Fatal编程技术网

在双向队列中写入访问冲突 我试图用C++创建一个双面队列。 我正在使用Visual Studio 2012并不断获得:

在双向队列中写入访问冲突 我试图用C++创建一个双面队列。 我正在使用Visual Studio 2012并不断获得:,c++,queue,visual-studio-2012,C++,Queue,Visual Studio 2012,控制台中0x00D95A29处的第一次机会异常\u Assignment1.exe:0xC0000005:访问冲突写入位置0x00000008。 我想我有一个指针问题(可能是试图去引用一些我不应该去引用的东西)。 到目前为止,我还没有找到问题,我真的很想再看一眼 (代码太长,无法粘贴,因此我将只复制我认为存在问题的函数。) 也许只是一个小的概述。我有一个node类,它包含指向node的两个指针(next和previous)和一个int(value)。以及一个队列类,其中包含指向节点的两个指针(第

控制台中0x00D95A29处的第一次机会异常\u Assignment1.exe:0xC0000005:访问冲突写入位置0x00000008。

我想我有一个指针问题(可能是试图去引用一些我不应该去引用的东西)。 到目前为止,我还没有找到问题,我真的很想再看一眼

(代码太长,无法粘贴,因此我将只复制我认为存在问题的函数。) 也许只是一个小的概述。我有一个node类,它包含指向node的两个指针(next和previous)和一个int(value)。以及一个队列类,其中包含指向节点的两个指针(第一个和最后一个)和一个int(大小)


提前感谢您的帮助

我想这是你的问题:

 while (this->first->getNext() != NULL)  // go through all nodes and delete them one by one
{
    node* deletion = this->getFirst();
    this->setFirst( this->getFirst()->getNext() );
    delete deletion;
}
删除最后一个节点时,将调用

this->setFirst( null );
因为
this->getFirst()->getNext()
将为空,对吗? 因此,
while(this->first->getNext()
变为
null->getNext()

为什么不

while(this->first != NULL)
?

编辑:除非你真的关心最小化析构函数的运行时间,为什么不呢

while(this->getFirst() != NULL) {this->dequeueBeg;}
约阿希姆的评论:
“您试过在调试器中运行吗?它将帮助您找到崩溃的位置,并让您检查变量以帮助您查看可能导致崩溃的原因。但是,您是否考虑过当您将第一个节点排队时会发生什么情况,这意味着没有当前的第一个节点(即此->getFirst()返回NULL)?您在排队功能方面也有类似的问题。”

我的问题是没有正确地处理插入到空队列或删除最后一个节点的操作


谢谢大家!

为什么?您是否发现
std::deque
有问题?您是否尝试过在调试器中运行?它将帮助您找到崩溃的位置,并让您检查变量以帮助您查看可能导致崩溃的原因。但是,您是否考虑过在第一个节点排队时会发生什么,这意味着没有当前节点第一个节点(即
this->getFirst()
返回
NULL
)?您在排队功能方面也有类似的问题。我认为您必须发布所有代码。很可能您有多个问题。也很可能这些问题与您认为的不同。建议总是一样的,发布您可以管理的最小、完整、可编译的程序at仍然存在您试图解决的错误。换句话说,做一些工作以删除不相关的内容,但以其他方式发布所有内容。这可能是一个问题,但不幸的是不是导致我出现问题的问题。即使修复了它,我仍然会遇到相同的异常。@Ned虽然这不是当前崩溃的原因,但您也有许多类似的问题代码中的(使用指针而不检查它们是否为
NULL
)。
while(this->getFirst() != NULL) {this->dequeueBeg;}