我是一个python程序员,他对C ++很新,而且我第一次尝试编写一个链表。
我的书让我这样写......
ListNode *node, *newNode = new ListNode(x);
if (head_ != NULL) {
node = _find (size_ - 1);
node->link_ = newNode;
}
else {
head_ = newNode;
}
size_ += 1;
这是有道理的,但它似乎比我最初的做法更复杂......
void LList::append(ItemType x)
{
ListNode *node=head_, *newNode = new ListNode(x);
while (node->link_ != NULL) {
node = node->link_;
}
node->link_ = newNode;
size_ += 1;
}
不幸的是,当我尝试在Mac OSx Mountain Lion的X-Code上运行它时,我收到一条奇怪的信息。
Thread: 1 EXC_BAD_ACCESS(code=1, address=0x8)
有人能解释一下这意味着什么吗?
答案 0 :(得分:2)
如果列表为空,head_
为NULL或未初始化,并且您的代码不会检查该可能性。您的代码将尝试读取未分配的head_->link_
,从而导致内存访问错误。