<div dir="ltr">Thanks Even for the prompt answer.<div>I would have expected a method through the OGR API to handle it without having to call proj but if it appears like the standard or default way for you to do it, let's do it.</div><div><br></div><div>Cheers,</div><div><br></div><div>Mathieu</div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 4, 2015 at 4:20 PM, Even Rouault <span dir="ltr"><<a href="mailto:even.rouault@spatialys.com" target="_blank">even.rouault@spatialys.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">Le jeudi 04 juin 2015 16:04:32, Mathieu Coudert a écrit :<br>
> Hello,<br>
><br>
><br>
><br>
> I am using GDAL 1.11.2 on linux Centos and here is one of my function :<br>
><br>
><br>
><br>
> {<br>
><br>
> OGRSpatialReference sr;<br>
><br>
> if (sr.SetFromUserInput(proj.c_str()) != OGRERR_NONE)<br>
><br>
>     throw InvalidInput();<br>
><br>
><br>
><br>
> char *wkt;<br>
><br>
> sr.exportToWkt(&wkt);<br>
><br>
> string srs (wkt);<br>
><br>
> OGRFree(wkt);<br>
><br>
><br>
><br>
> return srs;<br>
><br>
> }<br>
><br>
><br>
><br>
> This code works fine but when I use Valgrind on it, I get the following<br>
> message :<br>
><br>
><br>
><br>
> […] bytes still reachable at line X<br>
><br>
> where X is the line with the setFromUserInput<br>
><br>
> (please find below the full stacktrace)<br>
><br>
><br>
><br>
> [...] are still reachable [...]<br>
><br>
> ==22766==    at 0x4A06A2E: malloc (vg_replace_malloc.c:270)<br>
><br>
> ==22766==    by 0x54EB3B7: pj_malloc (pj_malloc.c:19)<br>
><br>
> ==22766==    by 0x54F67BB: pj_insert_initcache (pj_initcache.c:161)<br>
><br>
> ==22766==    by 0x54EA388: get_init (pj_init.c:288)<br>
><br>
> ==22766==    by 0x54EA57B: pj_init_ctx (pj_init.c:428)<br>
><br>
> ==22766==    by 0x54EB154: pj_init_plus_ctx (pj_init.c:366)<br>
><br>
> ==22766==    by 0x6A4978: OCTProj4Normalize (ogrct.cpp:309)<br>
><br>
> ==22766==    by 0x6A3215: OGRSpatialReference::importFromEPSGA(int)<br>
> (ogr_fromepsg.cpp:2222)<br>
><br>
> ==22766==    by 0x6A381B: OGRSpatialReference::importFromEPSG(int)<br>
> (ogr_fromepsg.cpp:2095)<br>
><br>
> ==22766==    by 0x693E41: OGRSpatialReference::SetFromUserInput(char<br>
> const*) (ogrspatialreference.cpp:1955)<br>
><br>
> ==22766==    by 0x44D70B:<br>
> GisKit::ProjToSRS(std::__cxx11::basic_string<char, std::char_traits<char>,<br>
> std::allocator<char> > const&) (GisKit.cpp:46)<br>
><br>
><br>
> Do you have any ideas?<br>
<br>
</div></div>Mathieu,<br>
<br>
This is not lost memory, but cached proj.4 definitions. You could explicitely<br>
call pj_clear_initcache() (from proj_api.h) at the end of your process to<br>
clear that cache.<br>
<span class="HOEnZb"><font color="#888888"><br>
Even<br>
<br>
--<br>
Spatialys - Geospatial professional services<br>
<a href="http://www.spatialys.com" target="_blank">http://www.spatialys.com</a><br>
</font></span></blockquote></div><br></div></div>