delta trinity
Mon, 03 Mar 2003 23:35:23 -0500

>Hi, I am trying to create custom allocation functions as follows
>  mp_set_memory_functions(myAlloc, myRealloc, myFree);
>Where myAlloc, myRealloc, and myFree are just wrappers of malloc, realloc, 
>and free (for testing purpose)
>I then try a simple example to see if it works
>mpz_t n;
>mpz_ui_pow_ui(n, 10, 108);
>I run the code in a debugger. What surprises me is that the code never 
>stops in myAlloc. How could this happen? The document states that the 
>custom functions will be used for all memory allocation done by GMP. Does 
>anyone know why?

This may sound obvious but how did you debug?  Did you put breakpoints 
inside your memory wrapper functions?  Just single-steping through the main 
functions (i.e. mpz_init, mpz_ui_pow_ui, ...) may not be enough if you don't 
specifically put breakpoints inside the memory functions.  This is because 
when you call mpz_init, the debugger see that you're execuing code outside 
of the program lists of source codes and doesn't know that the memory 
functions will be called (actually, called-backed).  So, leaving the scope 
of the source code, the debugger just execute a 'step-over'.

So, whenever you specify callbacks functions, you should specifically put 
breakpoints on those callbacks if you want to step through them.

Alternatively, just to be sure, you could write a printf inside the memory 
functions, just as a quick debug to see if they get invoked.


Tired of spam? Get advanced junk mail protection with MSN 8.