편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2020.11.19

    소멸자에서 문제가 발생합니다. Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)


    소멸자에서 자꾸 에러가 나는데 저는 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이 문제가 있는것 같은데 뭘까요?

  • 프로필 얌 냠님의 편집
    날짜2020.11.19

    소멸자에서 문제가 발생합니다...


    소멸자에서 자꾸 에러가 나는데 저는 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이 문제가 있는것 같은데 뭘까요 ㅜㅜ