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 ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
