조회 : 6323 
 [ crt _ debug _ info . zip ] [ Understanding _ the _ LFH . pdf ] [ Windows 8 Heap Internals . pdf ] 
 Win 32 Debug CRT Heap Internals 의 0 xBAADF 00 D 표시 재현 
 다음 의 tweet 이 있 길래 , 
 MS 에서 는 디버깅 용 으로 메모리 할당 기본 값 을 0 xBAADF 00 D ( BadFood ) 를 쓰 고 , 리눅스 에서 는 0 xFEE 1 DEAD ( Feel Dead ) 를 reboot ( ) syscall 용 으로 쓴다고 ㅋㅋㅋ https : / / en . wikipedia . org / wiki / Magic _ number _( programming ) . .. 
 실제로 그런가 한 번 해 봤 습니다 . ^^ 
 Wiki 에 기록 된 내용 을 잘 소개 하 고 있 는 글 로 다음 의 내용 이 있 습니다 . 
 Win 32 Debug CRT Heap Internals 
 내용 을 간략 하 게 정리 해 보 면 . 
 debug CRT 의 malloc 을 이용 해 8 바이트 를 할당 받 으려고 하 는 경우 HeapAlloc 에게 총 48 바이트 를 요구 하 지만 , 다음 의 그림 에서 와 같이 HeapAlloc 자체 의 정보 및 예약 공간 으로 인해 malloc 에게 돌려줄 메모리 의 앞 으로 8 바이트 , 뒤 로 32 바이트 까지 해서 총 88 바이트 의 공간 이 소요 됩니다 . 
 위 의 내용 에 따르 면 malloc 호출 시 HeapAlloc 으로부터 할당 받 은 메모리 는 malloc 의 처리 를 거치 기 전 0 xBAADF 00 D 로 채워져 있 다고 되 어 있 습니다 . 이것 이 정말 사실 인지 , Visual Studio 의 디버거 기능 을 이용 해 확인 해봐야 겠 습니다 . ^^ 
 방법 은 간단 합니다 . malloc 함수 호출 에서 " Disassembly " 창 을 띄워 따라가 다 보 면 , 다음 의 call stack 에 따라 결국 HeapAlloc 으로부터 메모리 를 할당 받 게 됩니다 . ( 테스트 는 Visual Studio 2017 + Windows 10 에서 v 120 _ xp Platform toolset 설정 으로 한 것 입니다 . ) 
 __ imp __ HeapAlloc @ 12 
 _ heap _ alloc _ base ( unsigned int size ) 
 _ heap _ alloc _ dbg _ impl ( unsigned int nSize , int nBlockUse , const char * szFileName , int nLine , int * errno _ tmp ) 
 _ nh _ malloc _ dbg _ impl ( unsigned int nSize , int nhFlag , int nBlockUse , const char * szFileName , int nLine , int * errno _ tmp ) 
 _ nh _ malloc _ dbg ( unsigned int nSize , int nhFlag , int nBlockUse , const char * szFileName , int nLine ) 
 malloc ( unsigned int nSize ) 
 우선 , debug 버전 의 malloc 은 8 바이트 할당 요구 에 대해 HeapAlloc 에게 48 바이트 가 아닌 44 바이트 의 공간 을 요구 합니다 . 또한 , HeapAlloc 호출 후 @ eax 레지스터 의 내용 ( 0 x 01756 EC 8 ) 에 따라 다음 과 같이 메모리 창 으로 확인 해 봤 지만 0 xBAADF 00 D 패턴 은 찾 을 수 없 었 습니다 . 
 0 x 01756 EC 8 c 0 00 75 01 ? . u . 
 0 x 01756 ECC e 0 71 75 01 ? qu . 
 0 x 01756 ED 0 05 00 00 05 . ... 
 0 x 01756 ED 4 46 d 6 00 00 F ? .. 
 0 x 01756 ED 8 d 0 70 75 01 ? pu . 
 0 x 01756 EDC c 0 00 75 01 ? . u . 
 0 x 01756 EE 0 2 d 00 6 c 00 -. l . 
 0 x 01756 EE 4 30 00 2 d 00 0 . -. 
 0 x 01756 EE 8 02 00 00 02 . ... 
 0 x 01756 EEC 47 d 6 00 00 G ? .. 
 0 x 01756 EF 0 d 0 70 75 01 ? pu . 
 하지만 , CRT 에 의해 채워지 는 내용 은 " Win 32 Debug CRT Heap Internals " 문서 에 따라 그대로 수행 되 었 습니다 . 이 작업 은 _ heap _ alloc _ dbg _ impl 에 의해 이뤄지고 다음 과 같이 crt Debug 정보 로 채워 지 게 됩니다 . 
 11282 정성태 9 / 11 / 2017 4437 Math : 22 . 행렬 로 바라보 는 피보나치 수열 
 11281 정성태 8 / 26 / 2017 4441 . NET Framework : 677 . Visual Studio 2017 - NuGet 패키지 를 직접 참조 하 는 PackageReference 지원 
 11280 정성태 8 / 24 / 2017 3222 디버깅 기술 : 94 . windbg - 풀 덤프 에 포함 된 모든 모듈 을 파일 로 저장 하 는 방법 
 11279 정성태 8 / 23 / 2017 7989 . NET Framework : 676 . C # Thread 가 Running 상태 인지 아 는 방법 
 11278 정성태 8 / 23 / 2017 3666 오류 유형 : 417 . TFS - Warning - Unable to refresh . .. because you have a pending edit . [ 1 ] 
 11277 정성태 8 / 23 / 2017 4520 오류 유형 : 416 . msbuild - error MSB 4062 : The " TransformXml " task could not be loaded from the assembly 
 11276 정성태 8 / 23 / 2017 6134 . NET Framework : 675 . C # - 확장자 와 연결 된 실행 파일 경로 찾 기 [ 2 ] 1 
 11275 정성태 8 / 23 / 2017 9537 개발 환경 구성 : 323 . Visual Studio 설치 없이 빌드 환경 구성 - Visual Studio 2017 용 Build Tools 
 11274 정성태 8 / 22 / 2017 3891 . NET Framework : 674 . Thread 타입 의 Suspend / Resume / Join 사용 관련 예외 처리 
 11273 정성태 8 / 22 / 2017 5989 오류 유형 : 415 . 윈도우 업데이트 에러 Error 0 x 80070643 
 11272 정성태 8 / 21 / 2017 6654 VS . NET IDE : 120 . 비주얼 스튜디오 2017 버전 15 . 3 . 1 - C # 7 . 1 공개 [ 2 ] 
 11271 정성태 8 / 19 / 2017 3478 VS . NET IDE : 119 . Visual Studio 2017 에서 . NET Core 2 . 0 프로젝트 환경 구성 하 는 방법 
 11270 정성태 4 / 20 / 2018 10125 . NET Framework : 673 . C # 에서 enum 을 boxing 없이 int 로 변환 하 기 [ 2 ] 
 11269 정성태 8 / 17 / 2017 4073 디버깅 기술 : 93 . windbg - 풀 덤프 에서 . NET 스레드 의 상태 를 알아내 는 방법 
 11268 정성태 8 / 14 / 2017 3993 디버깅 기술 : 92 . windbg - C # Monitor Lock 을 획득 하 고 있 는 스레드 찾 는 방법 
 11267 정성태 8 / 10 / 2017 5173 . NET Framework : 672 . 모노 개발 환경 
 11266 정성태 8 / 10 / 2017 4462 . NET Framework : 671 . C # 6 . 0 이상 의 소스 코드 를 Visual Studio 설치 없이 명령 행 에서 컴파일 하 는 방법 
 11265 정성태 2 / 25 / 2019 20988 기타 : 66 . 도서 : 시작 하 세요 ! C # 7 . 1 프로그래밍 : 기본 문법 부터 실전 예제 까지 [ 11 ] 
 11264 정성태 8 / 9 / 2017 4367 오류 유형 : 414 . UWP app 을 signtool . exe 로 서명 시 0 x 8007000 b 오류 발생 
 11262 정성태 8 / 5 / 2017 4036 오류 유형 : 412 . windbg - SOS does not support the current target architecture . [ 3 ] 
 11261 정성태 8 / 1 / 2018 3902 디버깅 기술 : 91 . windbg - 풀 덤프 파일 로부터 강력 한 이름 의 어셈블리 추출 후 사용 하 는 방법 
 11260 정성태 8 / 3 / 2017 3872 . NET Framework : 670 . C # - 실행 파일 로부터 공개 키를 추출 하 는 방법 
 11259 정성태 8 / 2 / 2017 3534 . NET Framework : 669 . 지연 서명 된 어셈블리 를 sn . exe - Vr 등록 없이 사용 하 는 방법 
 11258 정성태 8 / 1 / 2017 4186 . NET Framework : 668 . 지연 서명 된 DLL 과 서명 된 DLL 의 차이점 1 
 11257 정성태 7 / 31 / 2017 4225 . NET Framework : 667 . b y passTrustedAppStrongNames 옵션 설명 1