Re: problem when mapping malloc to GC_malloc.

"BGB" <[email protected]>
Newsgroups gmane.comp.gcc.java.devel
Message-ID <[email protected]>
----- Original Message ----- 
From: "abhishek desai" <[email protected]>
To: <[email protected]>
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
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.