'object Model'에 해당되는 글 1건

  1. 2008/01/15 상속 및 virtual 키워드에 따른 C++ 개체 memory 해부 (2)
COM 구조에 관한 스터디 중 Inteface 지원을 위한 vptr 및 vtable에 관한 내용을 보다, 직접 vptr과 vtable memory layout을 쑤셔보고자 시작. 이 내용을 한두번 본 것도 아닌데 또다시 그냥 지나치려니 영 감질 맛이 나는거다. 하긴, 지금 아니면 언제 이 구조를 뜯어보겠어?

일단, vtable은 함수 포인터의 배열로 이루어진 가상함수 테이블을 의미하며, vptr은 vtable을 가리키는 C++ 개체에 숨겨진 포인터를 뜻한다. 이들 vtable 및 vptr이란 명칭은 관례적으로 그리 사용한다고. 물론 가상함수가 없는(해당 클래스에 virtual 키워드가 없는) 개체는 이들 둘 모두 없다. 따라서 해당 개체의 크기는 vptr의 크기(32bit OS일 경우 4byte)만큼 작아지겠다.

앞으로 보일 예제는 32bit WindowsXP 위의 Visual C++ 2005 버전으로 테스트한 것이다. 참고로, C++ 표준은 vptr의 개체내 위치나 vtable 구현법에 대해 지정하지 않는다고 한다. 따라서 컴파일러에 따라 결과는 달라질 것이다.

more..

2008/01/15 02:37 2008/01/15 02:37

트랙백 주소 :: http://anyflow.net/trackback/331

댓글을 달아 주세요

  1. 정성태 2008/01/15 08:34  댓글주소  수정/삭제  댓글쓰기

    아래의 글도. ^^

    __purecall이 무엇일까?
    ; http://www.jiniya.net/tt/597

    • 어쨌건간에 2008/01/15 09:49  댓글주소  수정/삭제

      C++/CLI 코딩 중에 봤었죠. 호출 규약인줄 알았는데 그게 아니군요~ 한 수씩 솔솔 감사드립니다~ ^^