vtable 크기는 정해져 있지 않습니다. 컴파일러 마음대로입니다. 심지어 vtable을 안만들수도 있습니다. (virtual) dynamic dispatch 를 실제로 어떤 식으로 구현할지는 표준이 정하지 않고 있기 때문입니다. 어떻게든 구현하면 되는 것이지 꼭 vtable을 사용해야할 필요는 없습니다. 컴파일러 맘입니다.
vtable을 만든다면 가상함수가 많아질수록 그 크기가 늘어나기는 하겠지요. 그런데 보통 vtable은 클래스당 하나이지 인스턴스당 하나가 아닙니다. 인스턴스는 vtable에 대한 포인터를 가지고 있을뿐입니다. 따라서 각 인스턴스가 차지하는 메모리의 크기는 가상함수의 수와 관계 없습니다.
vtable 크기는 정해져 있지 않습니다. 컴파일러
vtable 크기는 정해져 있지 않습니다. 컴파일러 마음대로입니다. 심지어 vtable을 안만들수도 있습니다. (virtual) dynamic dispatch 를 실제로 어떤 식으로 구현할지는 표준이 정하지 않고 있기 때문입니다. 어떻게든 구현하면 되는 것이지 꼭 vtable을 사용해야할 필요는 없습니다. 컴파일러 맘입니다.
vtable을 만든다면 가상함수가 많아질수록 그 크기가 늘어나기는 하겠지요. 그런데 보통 vtable은 클래스당 하나이지 인스턴스당 하나가 아닙니다. 인스턴스는 vtable에 대한 포인터를 가지고 있을뿐입니다. 따라서 각 인스턴스가 차지하는 메모리의 크기는 가상함수의 수와 관계 없습니다.
댓글 달기