Posts

Showing posts from March, 2017

Vitrual Function Implementation

To implement virtual functions, C++ uses a special form of late binding known as the virtual table. The virtual table is a lookup table of functions used to resolve function calls in a dynamic/late binding manner. The virtual table sometimes goes by other names, such as “vtable”, “virtual function table”, “virtual method table”, or “dispatch table”. Because knowing how the virtual table works is not necessary to use virtual functions, this section can be considered optional reading. The virtual table is actually quite simple, though it’s a little complex to describe in words. First, every class that uses virtual functions (or is derived from a class that uses virtual functions) is given its own virtual table. This table is simply a static array that the compiler sets up at compile time. A virtual table contains one entry for each virtual function that can be called by objects of the class. Each entry in this table is simply a function pointer that points to the most-derived functi...

Difference between new and malloc

new/delete Allocate/release memory Memory allocated from 'Free Store' Returns a fully typed pointer. new (standard version) never returns a NULL (will throw on failure) Are called with Type-ID (compiler calculates the size) Has a version explicitly to handle arrays. Reallocating (to get more space) not handled intuitively (because of copy constructor). Whether they call malloc/free is implementation defined. Can add a new memory allocator to deal with low memory (set_new_handler) operator new/delete can be overridden legally constructor/destructor used to initialize/destroy the object malloc/free Allocates/release memory Memory allocated from 'Heap' Returns a void* Returns NULL on failure Must specify the size required in bytes. Allocating array requires manual calculation of space. Reallocating larger chunk of memory simple (No copy constructor to worry about) They will  NOT  call new/delete No way to splice user code into the allocation se...