본문 바로가기

코딩/C++,C

[C/C++]delete로 변수가 삭제되지 않을 때

boycoding.tistory.com/204

 

C++ 07.12 - new와 delete를 사용한 동적 메모리 할당 (Dynamic memory allocation with new and delete)

new와 delete를 사용한 동적 메모리 할당 (Dynamic memory allocation with new and delete) 동적 메모리(dynamic memory) 할당이 필요하다. C++은 세 가지 기본 타입의 메모리 할당을 지원한다. 이 중 두 가지는..

boycoding.tistory.com

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