소멸자에서 자꾸 에러가 나는데 저는 xcode를 이용하고 있어서 도저히 어느 부분이 문제인지 모르겠습니다 ㅜㅜ
#include <stdio.h>
#include <iostream>
#include <cstring>
using namespace std;
class Person{
char* name;
char* addr;
public:
Person(const char *name, const char *addr){
this->name= new char[strlen(name)+1];
strcpy(this->name,name);
this->addr= new char[strlen(addr)+1];
strcpy(this->addr,addr);
cout<<"Person 객체 생성함("<<name<<")"<<endl;
}
~Person(){
cout<<"Person 객체 제거함("<<name<<")"<<endl;
delete [] name;
delete [] addr;
}
void print() const{
cout<<addr<<"에 사는"<<name<<"입니다."<<endl;
}
//이동 생성자 생성
Person(Person&& human2) : name{human2.name}, addr{human2.addr} {
human2.name=nullptr;
human2.addr=nullptr;
cout<<"Person 이동 완료~"<<endl;
}
void print(){
if((this->name == nullptr)&&(this->addr == nullptr)){
cout<<"이 데이터 이미 없어쥠"<<endl;
}
else{
cout<<"이름: "<< name <<" 주소: "<< addr <<endl;}
}
};
int main()
{
cout<<"C를 D로 이동 생성자 실행"<<endl;
Person C("김쫀떡","서울특별시");
Person D = move(C);
C.print();
D.print();
cout<<endl;
}
<결과값>
Person 객체 생성함(강시루)
C를 D로 이동 생성자 실행
Person 객체 생성함(김쫀떡)
Person 이동 완료~
이 데이터 이미 없어쥠
이름: 김쫀떡 주소: 서울특별시
Person 객체 제거함(김쫀떡)
Person 객체 제거함((lldb) //여기서 Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)
이 오류가 납니다.
nullptr이 문제가 있는것 같은데 뭘까요?