Car * a=new Car();
cout<<a<<endl;
delete a;
cout<<"delete 실행됨."<<endl;
cout<<a<<endl;
Car b;
b.a=5;
a=&b;
cout<<a->a<<endl;
분명히 delete로 변수 a를 삭제했는데 에러 안나고 잘 실행되었다..
->delete a하면 포인터 변수 a가 삭제되는 것이 아니었다.. 메모리 공간을 운영체제에게 반환할 뿐.
그리고 여기서는 a=&b로 a가 가리키는 주소값을 변경시키고 있기 때문에 a는 앞으로 계속 사용가능하다.
그렇다면 a는 언제 삭제되는가? 자신의 스코프를 벗어낫을 때 사라진다. 위의 블로그에서 아주 자세히 설명해주고 있으니 잘 읽어봐라!
'코딩 > C++,C' 카테고리의 다른 글
[C/C++]람다 (0) | 2021.04.06 |
---|---|
[C/C++] .h와 .hpp의 차이 (0) | 2021.03.31 |
[C/C++]EOF? (0) | 2021.03.23 |
[C/C++] stdin, stdout의 정체? (0) | 2021.03.23 |
[C/C++]dangling pointer(허상 포인터) (0) | 2021.03.21 |