# bson_mem_set_vtable()

## Synopsis

    typedef struct _bson_mem_vtable_t {
       void *(*malloc) (size_t num_bytes);
       void *(*calloc) (size_t n_members, size_t num_bytes);
       void *(*realloc) (void *mem, size_t num_bytes);
       void (*free) (void *mem);
       void *(*aligned_alloc) (size_t alignment, size_t num_bytes);
       void *padding[3];
    } bson_mem_vtable_t;

    void
    bson_mem_set_vtable (const bson_mem_vtable_t *vtable);

## Parameters

- `vtable`: A bson_mem_vtable_t with every non-padding field set.

## Description

This function shall install a new memory allocator to be used by Libbson.

For backwards compatibility, if `vtable->aligned_alloc` is not set, calls to `vtable->aligned_alloc` will use `vtable->malloc` instead.

Warning

This function MUST be called at the beginning of the process. Failure to do so will result in memory being freed by the wrong allocator.