On Wed, 12 Nov 2014 12:40:30 +0000
Chris via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote:

> The following causes the DLL to crash on Windows:
> 
> Input: immutable(short)* data (immutable because in separate 
> thread).
> // Later
> core.stdc.stdlib.free(cast(short *)data);
> 
> (short* data is provided by the C library, where the memory is 
> allocated)
> 
> On Linux it works fine and never crashes, in the Windows DLL it 
> randomly causes an access violation in memory (both read and 
> write). Note that it doesn't crash immediately, it goes on for a 
> while, but sooner or later it crashes. If I comment out this 
> line, everything works fine. However, if I don't free the memory, 
> I'll have a memory leak. Any hints/advice/guesses?
seems that you are using two different allocators here. one is that
comes with DLL and other that comes with D. i bet they either using
different runtimes, or C runtime is doesn't know about another C
runtime in DLL.

on GNU/Linux there is only one runtime (most of the time), so there
is no problem with different allocators.

Attachment: signature.asc
Description: PGP signature

Reply via email to