728x90
반응형
댕글링 포인터?
-적절한 타입의 유효한 객체를 가리키고 있지 않은 포인터를 의미
-즉, 해제된 메모리 영역을 가리키고 있는 포인터를 댕글링 포인터라고 한다.
코드를 통해 댕글링 포인터가 뭔지 자세히 이야기 해보자.
다음과 같이 코드를 작성하여 numA를 출력하면 문제없이 1이 출력되고, numA의 메모리가 해제될 것이다.
int* numA = new int(1);
std::cout << *numA << std::endl;
delete numA;
다음과 같이 numB도 선언하고, 이것이 numA를 가르키게 하여 출력해도 문제없이 numA와 numB모두 1이 출력될 것이다.
int* numA = new int(1);
int* numB = numA;
std::cout << *numA << " " << *numB << std::endl;
delete numA;
만약 numA를 delete한 뒤 numB를 다시 출력한다면 이는 쓰레기값이 출력될 것이고, 이때 포인터 변수 numB를 댕글링 포인터라고 부른다.
int* numA = new int(1);
int* numB = numA;
std::cout << *numA << *numB << std::endl; //numA와 numB 모두 1출력
delete numA;
std::cout << *numB << std::endl; //numB의 값이 1이아닌 쓰레기 값이 출력
728x90
반응형
'C++ 공부' 카테고리의 다른 글
lambda (0) | 2021.08.22 |
---|---|
exception (0) | 2021.08.22 |
template (0) | 2021.08.20 |
relational (0) | 2021.08.20 |
inheritance 04 (0) | 2021.08.20 |