In file gperftools-2.2.1/src/gperftools/malloc\_extension.h, it reads:

```
// Extra extensions exported by some malloc implementations.  These
// extensions are accessed through a virtual base class so an
// application can link against a malloc that does not implement these
// extensions, and it will get default versions that do nothing.
//
// NOTE FOR C USERS: If you wish to use this functionality from within
// a C program, see malloc_extension_c.h.

```

My question is how exactly can I access these extensions through a virtual base class? 

Usually to load a class from a dynamic library, I would need to write a base class which allows me to get an instance of the wanted class and its functions through polymorphism, as described [here](https://stackoverflow.com/questions/496664/c-dynamic-shared-library-on-linux). 

However to do so there must be some class factory functions available in the API, but there are no such functions in any tcmalloc files. Moreover I would also need to load the tcmalloc library with dlopen(), which is not recommended according to the install note:

> 
> ...loading a malloc-replacement library via dlopen is
>  asking for trouble in any case: some data will be allocated with one malloc, some with another.
> 
> 
> 

So clearly accessing the extensions through the typical way as mentioned above is not an option. I can get away with using the C versions as declared in malloc\_extensions\_c.h but just wonder if there is any better solution.