Good article and an interesting read!
I just have one remark that I can perfectly understand that you left out of the article for brevity.
In a C++ program, an object in memory is typically represented by the memory address of the class's v-table (a table of all the functions belonging to the object's class) followed by the storage for the object's data
"Typical" in this context is debatable. The v-table only comes into play when the programmer has used virtual functions (e.g., for polymorphism). Some applications make use of this feature but other applications don't. The latter applications will not have v-tables stored with each class instance. This is the zero-overhead principle of C++ in action: If you don't use a feature, you won't pay for it.
Just to stretch the argument further: Even when virtual functions are used, the C++ standard does not mandate the use of v-tables. However, all the implementations I know of use v-tables.
[EDIT] Typo.