【问题标题】:Unhandled exception at 0x010F2F1C in program.exe: 0xC0000005: Access violation reading location 0xCCCCCCD0program.exe 中 0x010F2F1C 处未处理的异常:0xC0000005:访问冲突读取位置 0xCCCCCCD0
【发布时间】:2014-11-14 09:21:16
【问题描述】:

我似乎无法弄清楚为什么会出现这样的错误:我正在尝试实现链表并插入到列表中,但是在我的第三行代码中我遇到了访问错误。 错误:

Unhandled exception at 0x010F2F1C in program.exe: 0xC0000005: Access violation reading location 0xCCCCCCD0.

在我的主()中

list2.InsertNode(1, test);
cout << "cout << list2 " << endl;
cout << list2 << endl;

插入方法

void NodeSLList::InsertNode(int nodeNum, const IntNode &node)
{


    IntNode *prevNode = head;
    for (int i = 1; i < nodeNum; i++)
        prevNode = prevNode->next;

    IntNode * insert;
    insert = new IntNode(node);
    prevNode->next = insert;

    insert->next = prevNode->next->next;

}

在第三行出现错误cout &lt;&lt; list2 &lt;&lt; endl;("

ostream & operator<<(ostream & output, NodeSLList & list)
{
    int size;
    size = list.GetSize();
    output << "List: ";
    for (int i = 1; i <= size; i++)
    {
        output << list.RetrieveNode(i).data<<"    ";
    }
    return output;
}

更具体地说,当调用

    p = p->next;

getsize 方法:

int NodeSLList::GetSize()
{
    // check to see if the list is empty. if 
    // so, just return 0
    if (IsEmpty()) return 0;

    int size = 1;
    IntNode *p = head;
    // compute the number of nodes and return
    while (p != tail)
    {
        // until we reach the tail, keep counting
        size++;
        p = p->next;
    }
    return size;
}

【问题讨论】:

  • 在您的代码中的某个地方,您正在使用尚未写入的数据(从外观上看,偏移 4 到某种结构或类中) - 也许您的构造函数 IntNode没有将next 设置为0/NULL/nullptr?
  • 通常,0xCCCCCCD0 之类的值表示您正在从某处未初始化的变量中读取数据。这是什么? insert-&gt;next = prevNode-&gt;next-&gt;next -- 因为prevnode-&gt;next 设置为insert,这不会导致将一个next 设置为相同的另一个next?
  • insert->next = prevNode->next->next 将插入的节点设置为链表上的下一个值 prev 节点 -> 插入的节点 -> (prevNode->next->next)

标签: c++ pointers memory linked-list


【解决方案1】:

0xcc 或 0xcccccccc 是 MSVC 用来初始化程序未显式初始化的局部变量的模式(如果设置了 /GX)。

如果您的p-&gt;next 访问 0xCCCCCCD0 失败,这表明您的指针 p 是 0xCCCCCCCC。查看您未在此处发布的构建列表的代码,并检查您是否始终将 next 设置为正确的值。

【讨论】:

    猜你喜欢
    • 2014-10-26
    • 2018-12-05
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多