There are a few questions concerning vptr and exe:
1) When is vTable created and populated ie compile-time or run-time?
2) Does compiler put vptr in exe ie size of exe increases with no. of classes having virtual functions
3) Does executable size grows when we run it and when it contain virtual functions
This is all implementation defined and will vary from compiler to compiler, The standard does not mention how dynamic dispatch should be implemented, it does not even use the words vtable and vpointer, but all known compilers implement dynamic dispatch through vtable and assuming that answers to your questions are:
When is vTable created and populated ie compile-time or run-time?
Compile time
vtable is created for each class with atleast one virtual method during compilation phase.
Does compiler put vptr in exe ie size of exe increases with no. of classes having virtual functions?
Yes, most likely
Since the vtable has to reside somewhere in memory, it will occupy some memory space for sure.
Does executable size grows when we run it and when it contain virtual functions?
No there is no runtime growth of exe.
Only the dispatch of functions happens at run-time, the mechanism to make that dispatch happen is constructed at compilation.