프로그램의 안전성을 위해 포인터의 유효성을 확인해야 하는 경우가 있다.

웹에서 "포인터 유효성 검사"라고 검사하면 쉽게 찾을 수 있는 내용으로
IsBadCodePtr
IsBadReadPtr
IsBadWritePtr
IsBadStringPtr
이 있다.

그런데 MSDN으로 찾아보면 주의할만한 내용이 있다.

각 함수별 문서 서두에는 아래와 같은 내용이 있다.

Important
This function is obsolete and should not be used. Despite its name, it does not guarantee that the pointer is valid or that the memory pointed to is safe to use. For more information, see Remarks on this page.

내용이...

이 함수는 구식이고 사용해서는 안된다.
이것은 포인터가 유효하거나 사용하기에 안전한 것을 보장하지 않는다.


뚜둥!!

그렇다. 
MS에서는 위의 함수들은 쓰지말라고 하고 있다.
아마, 이전에 만들어놨기 때문에, 하위 호환성을 위해 남겨진 함수일 것이다.

웹검색에 나타나는 내용을 보면 
아직도 현업에서 사용하고 있는 함수인거 같은데....

각 함수의 비고를 보면
선점형 멀티태스킹 환경 어쩌고 저쩌고 하면서,
structured exception handling을 사용하기를 권고하고 있다.

■ Structured Exception Handling
http://msdn.microsoft.com/en-us/library/windows/desktop/ms680657(v=vs.85).aspx 

난 MS가 하는 말이 옳다고 본다.
위 함수들은 사용하지 말고 예외처리를 사용합시다. 
Posted by 아..몰라 ㅡ.ㅡ+
,