Because there is no second thread to do that, R is single threaded. The gc could only be run from within another R API command or macro, but there is none in between.
Best Oleg Dr Oleg Sklyar Research Technologist AHL / Man Investments Ltd +44 (0)20 7144 3803 [email protected] > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Dominick Samperi > Sent: 14 April 2010 06:51 > To: [email protected] > Subject: [Rd] Why no race condition when returning > UNPROTECT-ed memory fromC? > > Consider the C (or C++) code called from the .Call interface: > SEXP foo() { > SEXP *p = PROTECT(allocVector(REALSXP, 10)); > ... > UNPROTECT(1); > return p; > } > > Why is there no danger that the allocated memory will be garbage > collected after the UNPROTECT, but before the return of p? > > I have used code like this for some time and have never had a > problem, but I'm not sure if/why it is guaranteed to work. > > Thanks, > Dominick > > [[alternative HTML version deleted]] > > ______________________________________________ > [email protected] mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > ********************************************************************** Please consider the environment before printing this email or its attachments. The contents of this email are for the named addressees ...{{dropped:19}} ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
