Dangling Pointer는 더 이상 참조할 수 없는 포인터를 가리킨다.
Dangling Pointer는 두가지가 있는데, 하나는 의도적인 거고, 하나는 버그다.
아래 델파이 코드를 보자.
var P: Pointer;
begin
P := nil;
if Assigned (P) then Writeln ('You won''t see this');
GetMem(P, 1024); {P valid}
FreeMem(P, 1024); {P no longer valid and still not nil}
if Assigned (P) then Writeln ('You''ll see this');
end;
위와 같을 경우, 맨 마지막, Pointer P가 바로 Dangling poingter다. Free만 시키고 NIL을 가리키지 않은 상태. 이게 Dangling Pointer의 첫번째 유형이다.
이 경우 NIL이 아니기 때문에 Assigned 함수로도 찾아낼 수 없다.
두번째 경우는 버그다.
C++의 경우,
CPoint * ppt = new CPoint();
ppt = new CPoint();
이렇게 한다면 첫번째 ppt는 프로그램 내에서 더 이상 참조할 수가 없다.
이 경우에도 ppt가 Dangling Pointer가 되는데, 이건 버그다 .
'프로그래밍' 카테고리의 다른 글
Visual C++ 2003에서 이벤트만들고 델파이에서 쓰기 (0) | 2006.11.04 |
---|---|
WinError.h 파일에 정의된 에러 검색 ver 1.0.0.1 (0) | 2006.10.18 |
ActiveX에서 hInstance 얻는 법 (0) | 2006.09.04 |
STL에서 List 쓰기 (0) | 2006.07.26 |
ATL 에서 윈속2 쓰기 (0) | 2006.07.08 |