원본 : http://www.debuglab.com/knowledge/pointermacro.html
1.요약
포인터가 올바른 메모리 블럭을 가리키고 있는지 조사할 수 있는 API 들이 몇 가지 있습니다. ( IsBadWritePtr() 을 MSDN 에서 찾으시면 비슷한 친구들까지 모두 찾을실 수 있을겁니다 )
MFC 에는 이 API를 사용해서 간단한 매크로를 만들어 두었습니다.
2.본문
바로 다음 두 친구가 그 매크로 입니다.
물론 문서화되어 있지 않은 매크로이지만, 내용이 아주 간단하므로 직접 만드는 것도 무리는 없기때문에 사용할만 하다고 하는군요.
3.예제
4.참고
Debugging Windows Program, Strategies, Tools, and Techniques for Visaul C++ Programmers p.95
AfxIsValidAddress()도 있네요.
- 2001.08.13 Smile Seo -
1.요약
포인터가 올바른 메모리 블럭을 가리키고 있는지 조사할 수 있는 API 들이 몇 가지 있습니다. ( IsBadWritePtr() 을 MSDN 에서 찾으시면 비슷한 친구들까지 모두 찾을실 수 있을겁니다 )
MFC 에는 이 API를 사용해서 간단한 매크로를 만들어 두었습니다.
2.본문
바로 다음 두 친구가 그 매크로 입니다.
ASSERT_POINTER( pointer, pointerType); ASSERT_NULL_OR_POINTER( pointer, pointerType);개발자 입장에서는 이 매크로의 정의를 소스 코드로 보시는 게 더 이해하기 쉬울거라 생각됩니다.
#define ASSERT_POINTER(p, type) \
ASSERT(((p) != NULL) && AfxIsValidAddress((p), sizeof(type), FALSE))
#define ASSERT_NULL_OR_POINTER(p, type) \
ASSERT(((p) == NULL) || AfxIsValidAddress((p), sizeof(type), FALSE))
간단히 설명드리자면 ASSERT_POINTER 는 해당 포인터가 반드시 NULL이 아니고 올바르며 ASSERT_NULL_OR_POINTER 는 해당 포인터가 NULL이거나 올바른 포인터 라는 의미가 되겠습니다. 물론 문서화되어 있지 않은 매크로이지만, 내용이 아주 간단하므로 직접 만드는 것도 무리는 없기때문에 사용할만 하다고 하는군요.
3.예제
4.참고
Debugging Windows Program, Strategies, Tools, and Techniques for Visaul C++ Programmers p.95
AfxIsValidAddress()도 있네요.
- 2001.08.13 Smile Seo -
"Win32 API" 카테고리의 다른 글
- Visual C++ 이 사용하는 확장자 살펴보기 (0)2007/03/21
- 캐럿의 위치 알기 (0)2007/03/19
- 포인터 변수를 검증하기위한 매크로 (0)2007/03/19
- 프로파일링(Profiling) 기능 활용하기 (0)2007/03/19
- Bitmap 이미지 resizing 하기 (0)2007/03/19

수안이의 컴퓨터 연구실



Leave your greetings.