Hello
Thank you for the response. So if my call is
y=foo()
z=malloc ( by memory allocations , do you mean via R_alloc and
allocVector and malloc or just the former two)
Other statements
Then I need to protect y. And in my case I don't return to R since I
have embedded it.
Why is this the case I.e if I perform mem allocs , I need to protect y
On Aug 24, 2009, at 8:18 AM, Duncan Murdoch <murd...@stats.uwo.ca>
wrote:r
C
On 8/23/2009 11:52 PM, Saptarshi Guha wrote:
Hello,
Suppose I have the function
SEXP foo(){
SEXP s;
PROTECT(s=allocVector(...))
....
UNPROTECT(1);
return(s)
}
y=foo() // foo is a recusrive call
Q: Am i correct in understanding that one does not need to write
PROTECT(y=foo()) ?(and a corresponding unprotect later on)
since it is the object that is protected , SEXP is an alias for
SEXPREC* and allocVector probably does some memory allocation which
does not get freed
when foo returns.
Whether y needs protecting depends on what happens between the y =
foo() call and the time you return to R. If nothing happens, i.e.
you just return y to R, then you're safe. If you do any memory
allocations after that call before returning to R then y will need
to be protected.
Duncan Murdoch
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel