On Thu, 30 Dec 2004, [iso-8859-1] Göran Broström wrote:

On Thu, Dec 30, 2004 at 08:01:41AM -0800, Thomas Lumley wrote:
On Thu, 30 Dec 2004, [iso-8859-1] Göran Broström wrote:

However, and that is my question/suggestion: Why not use Calloc+Free instead of R_alloc in vmmin (and maybe in other places)? I made the changes in 'optim.c' in the functions 'vmmin' and 'Lmatrix'. Then I rebuilt and reinstalled R-2.0.1. The result was great! My function ran very fast and without any memory problems.

So why not? Or will this change create other problems?

Memory will leak permanently if the functions are interrupted or an error occurs.

Not necessarily. If you take a closer look at TFM (as I just did), you find in Section 5.1.2:

Users should arrange to  Free  this memory when no longer needed, including
on error or user interrupt. This can often be done most conveniently from
an  on.exit  action in the calling  R  function -- see pwilcox for an
example.

Yes, this could be done. It would require a second C call (vmfree, say) that freed the memory, and would require all uses of vmmin to have an on.exit() action that called this vmfree. Using R_alloc means that nearly everyone doesn't have to worry about this, and a few unfortunate people have to become experts.


pwilcox has to use Calloc/Free because it is also part of the stand-alone math library, which won't have access to the R heap when it is used in other applications.


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

Reply via email to