我想在链接列表中添加1到4个整数,但是我收到以下错误。
/ *** thread 1 exc_bad_access(code = 1 address = 0x8)
#include <iostream>
#include "d_node.h"
using namespace std;
int main() {
node <int>*front=NULL,*curr=front,*newNode;
int i=0;
for(i=0;i<4;i++){
if(front==NULL)
front=new node<int>(i);
else{
newNode=new node<int>(i);
curr->next=newNode; //**ERROR in the line thread 1 exc_bad_access (code=1 address=0x8)
curr=newNode;
}
}
//WRİTELİNKEDLİST
while(front!=NULL){
cout<<front->nodeValue;
front=front->next;
}
return 0;
}
//预期输出 0 1 2 3
我该如何解决问题?
答案 0 :(得分:1)
在解除引用之前,您必须将curr
设置为正确的值。
尝试在curr = front;
之后添加front=new node<int>(i);
。
答案 1 :(得分:1)
在
node <int>*front=NULL,*curr=front,*newNode;
curr
设置为NULL
。
当您更改front
的值时,这不会更改curr
的值,因为您没有更改他们指向的内容,而是front
实际指向的内容。这就像期望b
在以下示例中为20
int a = 10, b = a;
a = 20;
如您所知b
仍然是10,这在改变指针存储的地址时是相同的行为。
所以当你使用
时curr->next=newNode;
curr
仍然是NULL
并尝试使用空指针是未定义的行为。在这种情况下,您将获得exc_bad_access
在使用之前,您需要将curr
设置为curr = front;
之类的好价值。