On 26 Feb 2007, at 10:51, Hin-Tak Leung wrote: > Ernest Turro wrote: >> Dear all, >> I have wrapped a C++ function in an R package. I allocate/ >> deallocate memory using C++ 'new' and 'delete'. In order to allow >> user interrupts without memory leaks I've moved all the delete >> statements required after an interrupt to a separate C++ function >> freeMemory(), which is called using on.exit() just before the .C >> () call. >> I am concerned about the following. In square brackets you see >> R's total virtual memory use (VIRT in `top`): >> 1) Load library and data [178MB] (if I run gc(), then [122MB]) >> 2) Just before .C [223MB] >> 3) Just before freeing memory [325MB] >> 4) Just after freeing memory [288MB] >> 5) After running gc() [230MB] >> So although the freeMemory function works (frees 37MB), R ends up >> using 100MB more after the function call than before it. ls() >> only returns the data object so no new objects have been added to >> the workspace. >> Do any of you have any idea what could be eating this memory? >> Many thanks, >> Ernest >> PS: it is not practical to use R_alloc et al because C++ >> allocation/ deallocation involves constructors/destructors and >> because the C++ code is also compiled into a standalone binary (I >> would rather avoid maintaining two separate versions). >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel >
> Read the help page of gc(). You need to run it with reset=TRUE for > the usage to drop back to original. i.e. gc(reset=TRUE). gc() on its > own doesn't quite do what you think it would do. > Thanks, but in this case it barely makes a difference.. :( ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel