13 Dec
2010
Posted in: 코드
By    7 Comments

Visual C++ 파워풀 개발 테크닉 오류 수정


Visual C++ 파워풀 개발 테크닉 오류 수정
by 신영진(YoungJin Shin), codewiz at gmail.com, @codemaru, http://www.jiniya.net

p19, p20

p19, p20에 있는 그림1과 그림2가 위와 같은 형태로 변경되어야 합니다. 위쪽이 그림1, 아래쪽이 그림2를 나타냅니다. 잘못된 내용은 우선 FREE와 RESERVE 메모리가 구분 없이 그려졌고, 16진수를 사용하면서 더하기는 10진수로 해버린 문제가 있었습니다. 흰색은 RESERVE 영역, 회색은 COMMIT영역, 검은색은 FREE 영역입니다. 그림1에서 FREE 영역의 크기가 0x2000으로 표기된 것이 0x8000이 되어야 하고, 그림2에서는 0x1000의 COMMIT 뒤쪽 부분이 모두 잘못 그려진 내용이 수정되었습니다. 노란 박스는 화살표 지점이 메모리의 어떤 번지를 나타내는지를 의미합니다.

p21

VirtualFree(0x12000, 0x5000, MEM_DECOMMIT)을 하면 책의 설명처럼 2, 4번 영역을 모두 예약 상태로 변경하지 않습니다. 0x12000부터 0x16fff까지의 영역을 해제하기 때문에 결과적으로 2번 영역만 해제가 됩니다. 책에 나온대로 2, 4번 영역을 모두 한번에 해제하기 위해서는 VirtualFree(0x12000, 0x5001, MEM_DECOMMIT)과 같은 형태로 사용해야 합니다.

p90, p91

그림2, 그림3에 표기된 EPS는 ESP가 되어야 합니다. ESP 레지스터가 가리키는 지점을 나타냅니다.


  • 트랙백 주소: http://www.jiniya.net/wp/archives/3577/trackback

관련 글

  • 도서문의

    도서에 대해 문의좀 드립니다.
    P31 에 GUID 부분에서 4그룹의 상위 3비트의 경우 0,2,6,7 밖에 올 수 없어서 [리스트1] 의 E의 경우 8, 9, A, B 의 문자로만 나타나게 된다라고 하셨는데..

    상위 3비트가 0,2,6,7이면 아래와 같을텐데
    000
    010
    110
    111

    여기서 어떻게 8, 9, A, B의 연번밖에 나올수 밖에 없는지.이해가 가질 않네요.

  • http://www.YHKim.com drvoss

    안녕하세요. 문의 주셔서 감사합니다.

    일단 제가 표현하는데 문제가 있었습니다.

    제 의도의 상위 3비트 0, 2, 6, 7의 의미는 0XXXXXXXX, 10XXXXXX, 110XXXXX, 111XXXXX 을 의미 하였습니다. 표현을 잘못 했네요 ^^;;

    그런데, 우리가 사용하는 일반적인 GUID의 경우 상위비트가 10인 경우만 사용됩니다. 따라서 헥사코드로 봤을 경우 1000, 1001, 1010, 1011만 올수 있으므로 8 9, A, B 이렇식의 네가지 케이스만 나올 수 있습니다. 8, 9, A, B는 이 의미였습니다.

    다음번 오타 수정기회가 있으면 참고하여 요 부분을 수정하도록 하겠습니다.

  • 가븨

    책 재출간은 안하시나요? 제가 알기로는 몇몇부분 수정해서 다시 출간한다고 알고있는데, 아직 감감무소식이라서요ㅠ

  • codewiz

    가븨 // 네 맞습니다. 저도 그렇게 들었었는데 하도 시간이 지나서 기억이 가물가물 하네용. 다시 한 번 알아보도록 하겠습니닷. 큭~

  • 가븨

    codewiz // 도서 재출간이 안되나요? 궁금해서 글을 남깁니다(__)

  • 김용인

    책 재출간좀 해주세요~ 파는데가 없네요.. ㅠㅜ

  • 학생

    책 재출간좀 부탁드립니다 정말 보고싶은 책이에요
    문법만 가르치는 겉저리 VC++ 책 이아닌 개발 테크닉과 팁이 풍부해보이는 이 책 꼭 보고싶습니다
    개인적으로라도 구매하고싶어요