댕글링 포인터란?
이미 할당 해제된 메모리를 가리키는 포인터
아래와 같은 상황에서 ptr2가 댕글링 포인터가 된다.
void main()
{
int *ptr1 = new int;
int *ptr2 = ptr1;
delete ptr1;
}
댕글링 포인터로 인한 문제를 방지하는 법 1
// delete 이후 포인터의 값을 nullptr로 설정해준다.
void main()
{
int *ptr1 = new int;
*ptr1 = 10;
delete ptr1;
ptr1 = nullptr;
// Null Reference exception
*ptr = 5;
}
댕글링 포인터로 인한 문제를 방지하는 법 2
// 여러 포인터가 같은 메모리 영역을 가리키지 않도록 한다.
void main()
{
int *ptr1 = new int;
int *ptr2 = new int;
delete ptr1;
delete ptr2;
}
'C++ > 기타' 카테고리의 다른 글
템플릿(Template) (0) | 2023.01.20 |
---|---|
깊은 복사와 얕은 복사 (0) | 2023.01.20 |
std::iterator와 std::reverse_iterator (0) | 2023.01.20 |
메모리 누수(Memory Leak) (0) | 2023.01.19 |
nullptr과 NULL (0) | 2023.01.19 |