고수닷넷 - 디버깅전문가님
1.요약new, malloc을 사용해서 메모리 블럭을 할당한 경우에, 포인터를 통해 메모리 블럭의 크기를 구하는 함수입니다. 물론 디버그 버전에서만 사용할 수 있습니다.
2.본문
CRT의 디버그힙은 디버그 용도로 메모리 블럭에 관한 정보를 관리하고 있습니다.
원형은 다음과 같습니다.
size_t _msize_dbg( void *userData, int blockType );
3.예제
#include <atlbase.h>
int main(int argc, char* argv[])
{
char* buf = new char [555];
ATLTRACE("size = %d\n", _msize_dbg( buf, _NORMAL_BLOCK) );
delete[] buf;
return 0;
}
int main(int argc, char* argv[])
{
char* buf = new char [555];
ATLTRACE("size = %d\n", _msize_dbg( buf, _NORMAL_BLOCK) );
delete[] buf;
return 0;
}
4.참고
릴리즈 모드에서 사요할 수 있는 함수도 있습니다.
size_t _msize( void *memblock );
MSDN에 보면 디버그 모드에서는 _msize가 _msise_dbg로 호출된다고 나와 있죠.
When the application is linked with a debug version of the C run-time libraries, _msize resolves to _msize_dbg.
"C++" 카테고리의 다른 글
- Override를 통해 잃어버리는 것들 (0)2007/03/01
- 비교 연산자를 위한 예약어들 (0)2007/03/01
- 할당된 블록의 크기 구하기 (0)2006/12/08
- 포인터 변수를 검증하기 위한 매크로 (0)2006/12/08
- base pointer를 지정하자. (0)2006/12/08

수안이의 컴퓨터 연구실



Leave your greetings.