<div dir="ltr"><div><div>Hi!<br><br></div>Yeah. I also found that. When I'm about to answer my own question, I saw your reply. It worked great. Thanks!<br><br></div>- Rujia<br><div class="gmail_extra"><br><br><div class="gmail_quote">
On Wed, Sep 25, 2013 at 9:02 PM, Stephan Frank <span dir="ltr"><<a href="mailto:defclass@googlemail.com" target="_blank">defclass@googlemail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">I'm not sure if this is the real problem but aren't you mixing C++ allocation via new with C-deallocation via free and should instead also use the C++ delete operator to free the memory, i.e. define a function such as<br>

<br><pre><code>void deleteForMe(int* pointer)
{
     delete[] pointer;
}<br><span style="font-family:arial,helvetica,sans-serif"><br></span></code></pre><pre><span style="font-family:arial,helvetica,sans-serif"><code>and call that instead of a simple free?<br><br></code></span></pre><pre><span style="font-family:arial,helvetica,sans-serif"><code>Regs,<br>

</code></span></pre><pre><code><span style="font-family:arial,helvetica,sans-serif">Stephan</span><br></code></pre><br></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">2013/9/25 Rujia Liu <span dir="ltr"><<a href="mailto:rujia.liu@gmail.com" target="_blank">rujia.liu@gmail.com</a>></span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div>Dear all,<br><br>I have trouble using foreign-free on win7 64bit.<br><br>My code:<br>

<br></div>C++:<br><br>int* gen(int n) {<br>    int* x = new int[n];<br>    for(int i = 0; i < n; i++) x[i] = i;<br>
    return x;<br>}<br><br></div>LISP:<br><br>(defun gen-values (n)<br>    (let* ((ret (cffi:foreign-funcall "gen" :int n :pointer)))<br>            (dotimes (i n)<br>                (format t "~A~%" (mem-ref (mem-aptr ret :int i) :int)))<br>


            (foreign-free ret)))<br><br></div>It works well on windows XP (32bit), but crashes on (foreign-free ret). SBCL win32 just crashes the process, while CCL win32 dropped me into kernel debugger. The topmost frame is a call to FREE.<br>


<br></div>Our customers use both 32-bit and 64-bit systems, so I'd like to provide a single exe that runs on both 32-bit and 64-bits. Our dev machine is running a 32-bit Windows XP, uses VS2008 to compile to C++ library to DLL.<br>


<br>After I commented out (foreign-free), the exe runs perfectly on both 32-bit and 64-bit, but there are memory leaks. Am I doing anything wrong?<br><br>Thanks in advance.<span><font color="#888888"><br><br>
</font></span></div><span><font color="#888888">- Rujia<br><br></font></span></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div></div>