public typedefs for gmp malloc/free types

Torbjorn Granlund tg at
Tue Aug 2 19:31:48 CEST 2011

Marc Glisse <marc.glisse at> writes:

  the following is a common use of gmp:
        void (*gmp_free) (void *, size_t);
        mp_get_memory_functions (NULL, NULL, &gmp_free);
        (*gmp_free) (str, strlen (str) + 1);
  which is valid in C, compiles with g++, but is invalid in C++
  proper. For this reason, we have in gmpxx.h:
What is invalid about it, in "proper C++"?

  extern "C" {
    typedef void (*__gmp_freefunc_t) (void *, size_t);
  so we can declare:
        __gmp_freefunc_t gmp_free;
  Now, I have to introduce this same fix in CGAL and in GCC. I believe
  it would be good if gmp provided an official, documented typedef for
  the types of the malloc/realloc/free functions it uses.
  Possibly gmp_malloc_t/gmp_realloc_t/gmp_free_t, but I really don't
  care about the name.
Their types is defined, without a typedef in the manual:

Please explain how new types for these function would improve things.
(There is a slight backward compatibility concern wrt adding types; old
GMP will not work as new ones.)


More information about the gmp-discuss mailing list