kno*_*lya 0 c++ struct pointers visual-studio-2010
结构看起来像这样:
template <class Node_entry>
Node<Node_entry>::Node(Node_entry item, Node *add_on)
{
entry = item;
next = add_on;
}
Run Code Online (Sandbox Code Playgroud)
并且*new_rear指针没有初始化,但是&item填充了用户输入.
Error_code Extended_queue::append(const Queue_entry &item) {
Node<Queue_entry> *new_rear = new Node<Queue_entry>(item);
if(new_rear = 0)
return overflow;
if(rear = 0){
front = new_rear;
rear = new_rear;
}
else {
rear->next = new_rear;
rear = new_rear;
}
return success;
}
Run Code Online (Sandbox Code Playgroud)
在VS2010的本地人中,这个和new_rear都是(!)在下一个和条目中,项目是好的.我该怎么做才能得到这个?
"访问冲突写入位置0x00000010."
我假设你想说if (new_rear == 0),不是if (new_rear = 0)吗?你的编译器应该给你一个警告.
编辑:如果你想知道它崩溃的原因 - 好吧,你给指针分配0,这也使得条件评估为零,所以你最终在else区块中,"rear"刚刚分配给0,所以"rear-> next"最终写入0x10.
顺便说一句,这就是为什么我总是使用最高警告级别进行编译,并将警告视为错误.警告是你的朋友.