8 #include <botan/internal/gnump_engine.h>    19 Allocator* gmp_alloc = 0;
    20 size_t gmp_alloc_refcnt = 0;
    25 void* gmp_malloc(
size_t n)
    27    return gmp_alloc->allocate(n);
    33 void* gmp_realloc(
void* ptr, 
size_t old_n, 
size_t new_n)
    35    void* new_buf = gmp_alloc->allocate(new_n);
    36    std::memcpy(new_buf, ptr, 
std::min(old_n, new_n));
    37    gmp_alloc->deallocate(ptr, old_n);
    44 void gmp_free(
void* ptr, 
size_t n)
    46    gmp_alloc->deallocate(ptr, n);
    59       mp_set_memory_functions(gmp_malloc, gmp_realloc, gmp_free);
    69    if(gmp_alloc_refcnt == 0)
    71       mp_set_memory_functions(NULL, NULL, NULL);
 
static Allocator * get(bool locking)