所以我用C再造一个LinkedList
++,我试图改变指针到最后Node
我的列表中。这里是我的超载+=
运营商所有的魔术和错误发生。我有两种不同的方法来改变指针,但都抛出Unhandled exception at 0x00ee42f3 in Lab3.exe: 0xC0000005: Access violation writing location 0xccccccec.
。发生了什么事情,我该如何解决它?C++在链接列表设置下一个节点指针
void MyLinkedList::operator+=(const std::string& s)
{
allocator<Node> a;
Node* n = a.allocate(1);
a.construct(n, s);
if (first == NULL)
first = n;
else
{
(*last).next = n; // crashes here
(*last).SetNext(n); //also will crash here, if the previous statement is removed
last = n;
}
}
为了进一步澄清,它会经过并设置第一Node
,退出方法,而下一次它被称为将运行并进入else
声明。此时有第二个Node
,它在内存中分配并实例化。我试图做的是设置Node* next
指针在第一Node
这个新Node
,但它抛出异常。对不起,最初很模糊。
我们不知道任何这些值是,无论他们是有效的,你的计划是当它到达这个阶段什么状态,什么SetNext()呢,等你还没有告诉我们到底是哪线路导致问题。你用过调试器吗? – PaulMcKenzie
你确定a.allocate返回一个有效的指针吗?另外如果最后一个是NULL,你可能会发现你的一个崩溃。 –
对于一个'operator + ='不应该返回一个void。 – jaho