vtable (링킹 단계에서 vtable과 rtti 블록이 데이터 세그먼트에 추가)
- vtable은 클래스당 하나씩 존재합니다.
- 클래스의 모든 가상 함수 주소가 vtable에 저장됩니다.
vptr (초기화는 생성함수가 실행될 때, 생성함수 내부에서 vptr를 해당 vtable 주소값으로 초기화)
- 객체마다 생성될때 vptr가 설정 되며, 해당 vptr은 vtable을 가킵니다.
- 크기는 포인터 크기와 같습니다. (64비트 프로그램에선 8바이트)
메모리 레이아웃이란 : 객체 내부의 메모리 구조입니다. 어떤 변수(vptr, 객체 내부 멤버 변수)들이 어떤 순서로 배치 되었는지를 나타내는 것 입니다.
'C++' 카테고리의 다른 글
[C++] 인터페이스 (0) | 2024.12.17 |
---|---|
[C++] RTTI (0) | 2024.12.17 |
[C++] 메모리 오버헤드 줄이기 (0) | 2024.12.15 |
[C++] 함수 포인터 vs std::function (0) | 2024.12.15 |
[C++] 데이터 영역과 BSS영역 (0) | 2024.12.13 |