


> Date: Mon, 21 Dec 2009 12:33:26 +1100
> From: a.kowalewski@ugrad.unimelb.edu.au
> To: r-help@r-project.org
> Subject: [R] Limit on number of times Realloc can be called?
> 
> Hello,
> 
> I've been writing a program in C that will be called by R. I seem to have
> stumbled upon an odd error that seems to suggest there is a limit on the
> number of times "Realloc" (the R version as defined in the manual
> "R-extenstions" not the C version "realloc") when I try to use the
> following program:
> 
> #include <R.h>
> #include <Rinternals.h>
> 
> SEXP test_mem_alloc(SEXP z) {
> 	double *t = Calloc(sizeof(double), double);
> 	*t = 2;
> 	SEXP end_product;
> 	int i = 0;
> 	for(i=1; i < 20; i++) {
> 		t = Realloc(t, sizeof(t) + sizeof(double), double);
> 		t[i] = i;
> 	}
> 	PROTECT(end_product = allocVector(REALSXP,6));
> 	for(i = 0; i < 20; i++) {
> 		REAL(end_product)[i] = t[i];
> 	}
> 	UNPROTECT(1);
> 	Free(t);
> 	return end_product;
> }
> 
> I call it from R using the following script:
> 
> z <- 1
> 
> test_mem_alloc <- function(z) {
> 	if(!(is.loaded("test_mem_alloc_v6"))) dyn.load("test_mem_alloc_v6.dll")
> 		out <- .Call("test_mem_alloc",
> 				as.double(z))
> 	return(out)
> 	dyn.unload("test_mem_alloc_v6.dll")
> }
> 
> Basically I get the following error messages:
> 
> First:
> 
> "Runtime Error!
> 
> Program: C:\Program Files\R\R-2.10.0\bin\Rgui.exe
> 
> This application has requested the Runtime to terminate it in an unusual
> way. Please contact the application's support team for more information."
> 
> The second error message is:
> 
> "The instruction at "0x0000002c". The memory could not be "read"."
> 
> Now, if change the number of times the program goes through the for loop
> from 20 to say 6, and hence calls Realloc fewer times, then the program
> runs without any problems. It does not seem to have anything to do with
> the size of the memory being allocated as I changed the size of the total
> memory being allocated with a "for" loop with only 6 iterations to
> something that is substantially larger than the memory being allocated in
> the "for" loop when calling Realloc twenty times and the program ran
> successfully. Has anyone else come across this problem or knows about some
> sort of limitation on using "Realloc" that is not specified in the R
> documentation?
> 
> Any help would be greatly appreciated.
> 
> Yours sincerely
> 
> Adam Kowalewski
> 
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
 		 	   		  
_________________________________________________________________

ail you.

cial-network-basics.aspx?ocid=PID23461::T:WLMTAGL:ON:WL:en-xm:SI_SB_3:092
	[[alternative HTML version deleted]]


