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

时间:2010-10-21 22:32:01

标签: c++ visual-studio-2010 pointers struct

结构如下所示:

template <class Node_entry>
Node<Node_entry>::Node(Node_entry item, Node *add_on)
{
    entry = item;
    next = add_on;
}

* new_rear指针未初始化,但&amp; 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;
    }

在VS2010的本地人中,这个和new_rear都是(!)在下一个和条目中,项目是好的。我该怎么做才能得到这个?

  

“访问冲突写入位置0x00000010。”

1 个答案:

答案 0 :(得分:6)

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

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

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