指针未使用结构作为参数进行初始化.访问冲突写入位置0x00000010.

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."

Ebo*_*ike 6

我假设你想说if (new_rear == 0),不是if (new_rear = 0)吗?你的编译器应该给你一个警告.

编辑:如果你想知道它崩溃的原因 - 好吧,你给指针分配0,这也使得条件评估为零,所以你最终在else区块中,"rear"刚刚分配给0,所以"rear-> next"最终写入0x10.

顺便说一句,这就是为什么我总是使用最高警告级别进行编译,并将警告视为错误.警告是你的朋友.