본문 바로가기
이런 저런...

A dangling pointer

by Lbird 2007. 6. 28.
C language에 보면 dangling pointer라는 것이 있다. 무엇인가를 가리키고 있긴 한데
그곳을 따라가 보면 아무것도 없거나 목적지가 무언가 엉망인 상태인 pointer를 말한다.
pointer는 흔히 link의 의미로 자주 사용되기 때문에 경우에 따라서는 dangling pointer를
missing link라고도 부를 수가 있다. 어쨌거나 가리키는 자는 있지만, 그걸 받아줄 자는
없는 상태인 건 마찬가지이다. dangling pointer는 그 자체로는 별 해가 없는데,
이 pointer를 참조하려는 행위를 하면 문제가 발생한다. 대개의 경우 access violation
종류의 error가 발생한다. 접근하면 안되는 곳을 접근하기 때문에 발생하는 error이다.

생각해 보니 dangling pointer 상태를 너무 오래 유지했다. 사실 ego에 의해서라기 보다는
super-ego에 의한 면이 많다. 잊지 않기 위해서 기억하려는 것이나, 기억하지 않기 위해서
잊으려 하는 것이나, 어느 것도 ego의 의지대로 되는 것은 아니기 때문이다.
예를 든다면, 나는 써먹어 본지 오래된 군번을 아직도 기억한다. 또는, 바뀐지 오래된
예전 우리집 전화 번호를 아직도 기억한다. 이런 것들은 내가 시시때때로 기억을
refresh하기 위해서 노력하지 않는데도 불구하고 기억에서 몰아내기 힘든 것들이다.
그렇다면 잊도록 노력하면 되지 않는가? 아니다. 잊도록 노력하는 것 자체가 기억을
refresh하니까. 그러니 잊었으면 좋겠는데도 잊지 못하는 건 상당한 괴로움이 된다.

어쨌거나 이런 것들이 dangling pointer가 되는 수가 있다. dangling pointer를 해소하는
방법은 pointer 자체를 없애는 것 외에는 없다. 하지만, 컴퓨터와 같이 의지에 의해서
자유롭게 망각할 수 없는 인간에게는, 자아의 파괴 외에는 완전한 해소라는 것이
불가능한 법이다. 그렇다고, 달갑지 않은 dangling pointer 하나 때문에 자기를
파괴하는 건 무모한 짓이다.

'이런 저런...' 카테고리의 다른 글

일주일간의 디버깅  (0) 2007.07.09
Freecell  (0) 2007.07.03
소릿바람의 기억  (1) 2007.06.28
Sentimentalism  (0) 2007.06.10
일본행  (2) 2007.05.28