UPDATE:  Okay I've narrowed the problem down.  Within my C routine I use the
getopt() method from <getopt.h>.  For some reason when I recall this routine
via my .Call, getopt() hasn't "refreshed" that is it still points to the end
of my parsed command line arguments.  Is R keeping this function alive in
memory? Is that why its retaining its previous values? How can I get R to
terminate this routine and reless its memory?

Thanks again for any suggetions!

Original Email ---

Hello:

I have a general question about memory allocation.  I'm having a problem
with an R function -- call it myRfunction -- that calls a C routine using
.Call.  For some reason it works the first time I call it, but for every
subsequent time it doesn't.  I'm thinking this has to be a memory allocation
issue.  If I quit R and then reload my package containing myRfunction, again
it works only the first time its called.

Here's how I allocate memory with in the C routine.

for( i=0; i<argC; i++){
    argV[i] = R_alloc(strlen(CHAR_STRING_ELT(argv,i))), sizeof(char)) :
    strcpy( argV[i], CHAR(STRING_ELT(argv,i))) ;
}

Can anyone give me some suggestions about how to debug this issue to see if
its indeed a memory problem? Could it be anything else?

Should I look into vmax, vmaxset etc ?

Thanks to everyone in advance for your help!

Greg

        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to