problem when mapping malloc to GC_malloc.

BGB cr88192@hotmail.com
Thu Jun 18 18:07:00 GMT 2009


----- Original Message ----- 
From: "abhishek desai" <abhi00@gmail.com>
To: <java@gcc.gnu.org>
Sent: Thursday, June 18, 2009 8:00 AM
Subject: problem when mapping malloc to GC_malloc.
> Hi,
>> My JNI code includes redefinitions to the malloc, free and realloc
> functions (shown below). These functions call GC_malloc, GC_free and
> GC_realloc respectively. This is done so that any calls to the malloc
> get allocated through the garbage collector. However this is failing
> with segfault. Any clues why this does not work ?
> I am using this code along with the libgcj library linked dynamically
> with my application.
>> void *malloc(size_t size)
> {
> return GC_malloc(size);
> }
>> void *realloc(void *ptr, size_t size)
> {
> return GC_realloc(ptr, size);
> }
>> void free(void *ptr)
> {
> GC_free(ptr);
> }
>
IMO, this is a very bad way to try to use a GC, and that it is blowing up 
when something like this is tried is no real surprise...
(very likely you will end up with code calling GC_malloc in some places, and 
the real malloc in others, and in-all creating a horrible mess...).
a much better (although IMO still not very good) way to do this would be to 
instead use macros to rename your functions:
#define malloc(x) GC_malloc(x)
...
which will apply locally to whatever code is in question (and, if used with 
caution, should resist blowing up...).
however, my personal recommendation is to NOT use a GC implicitly in this 
way, rather one should make use of the GC explicit (AKA: actually go and 
rename their function calls, and keep track of how they use pointers so that 
GC memory and malloc memory don't get mixed up, ...).
>> regards
> abhishek
>


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /