From j.hadfield at ed.ac.uk  Mon Mar 17 18:26:12 2014
From: j.hadfield at ed.ac.uk (Jarrod Hadfield)
Date: Mon, 17 Mar 2014 17:26:12 +0000
Subject: [Rd] valgrind and C++
Message-ID: <20140317172612.14976udr7chlzlcs@www.staffmail.ed.ac.uk>

Hi,

I am sorry if this is perceived as a C++ question rather than an R  
question. After uploading an R library to CRAN (MCMCglmm) the C++ code  
failed to pass the memory checks.  The errors come in pairs like:

Mismatched free() / delete / delete []
at 0x4A077E6: free (vg_replace_malloc.c:446)
by 0x144FA28E: MCMCglmm (MCMCglmm.cc:2184)


Address 0x129850c0 is 0 bytes inside a block of size 4 alloc'd
at 0x4A07CE4: operator new[](unsigned long) (vg_replace_malloc.c:363)
by 0x144F12B7: MCMCglmm (MCMCglmm.cc:99)

which is associated with lines allocating and freeing memory (nG is an  
integer):

int *keep = new int [nG];

and

delete [] keep;

To me this looks fine, and on my machine (Scientific Linux 6.4) using  
gcc 4.4.7-3 and valgrind 1:3.8.1-3.2 I get no such errors. Its not  
clear to me which flavour of Linux or compiler the CRAN team used,  
although from MCMCglmm-Ex.Rout I can see the same version of valgrind  
was used. Any insight would be very welcome.

Kind Regards,

Jarrod








-- 
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.



[Rd] valgrind and C++
Jarrod Hadfield