R-alpha: S_alloc

Luke Tierney luke@stat.umn.edu
Tue, 20 May 1997 12:38:54 -0500 (CDT)


Kurt Hornik wrote:
> 
> Does anyone know what exactly S_alloc() does?  (Yes, it's porting time
> again ...)
> 
> Thanks,
> -k
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
> r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
> 

I believe it allocates zero'd memory like calloc but S is responsible
for freeing it (calling free on it probably has "unpredictable results
..."). S probably usually frees the memry on return from the function
call that got you into C code. In old versions of S I think this was
managed by saving/ resetting the sbrk on function entry/exit and
allocating above the current sbrk value. THis way memory used in a
function was recovered just by restoring the sbrk -- a nice
stack-based discipline. I think the current strategy is a bit
different both to allow portability and to improve memory recovery
during a function call. As a rasult, memory allocated may not be freed
right after the outer call returns, but since S doesn't have a garbage
collector as such it probably has to happen pretty soon after the
return.

-- 
Luke Tierney
University of Minnesota                      Phone:           612-625-7843
School of Statistics                         Fax:             612-624-8868
206 Church Street                            email:      luke@stat.umn.edu
Minneapolis, MN 55455 USA                    WWW:  http://www.stat.umn.edu
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-