代码之家  ›  专栏  ›  技术社区  ›  knownasilya

指针未以结构作为参数初始化。写入位置0x00000010时发生访问冲突。

  •  0
  • knownasilya  · 技术社区  · 14 年前

    结构如下:

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

    并且*新的_后指针不会初始化,但&项中充满了用户输入。

       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的当地人中,这辆车和新款车都是!!)在下一个和条目中,项目是好的。我要做什么才能得到这个?

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

    1 回复  |  直到 12 年前
        1
  •  6
  •   EboMike    14 年前

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

    编辑:如果您想知道它为什么崩溃-好吧,您将0分配给指针,这也会使条件的值为零,因此您将以刚刚分配给0的“rear”结束在else块中,因此“rear->next”将以0x10结束。

    顺便说一句,这就是为什么我总是用最高的警告级别编译,而将警告视为错误的原因。警告是你的朋友。