Re: Passing arrays to MathLink without extra memory allocation
- To: mathgroup at smc.vnet.net
- Subject: [mg98758] Re: Passing arrays to MathLink without extra memory allocation
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Sat, 18 Apr 2009 03:37:37 -0400 (EDT)
- References: <gs9ek8$mso$1@smc.vnet.net>
Hi,
a) MathLink is always buffered and
b) it must copy the data into a memory area
that bot programs can access
c) your C-program can never access the memory space
of an other program/process. The operating system is
responsible to hinder/prevent such operations
Regards
Jens
axnavaei at googlemail.com wrote:
> Hi,
>
> When passing a list/array from mathematica to c using mathlink, eg
> when calling MLReleaseInteger32List(), it seems mathlink allocates
> some memory which later has to be freed, eg using
> MLReleaseInteger32List(). The question is, how is it possible to pass
> a list from mathematica to c without this c memory allocation?
>
> This example helps to make the question more clear: Assume MyFunction
> [BigList] to be a function implemented in c using mathlink, where
> BigList is a list of integers. Since BigList has been already created
> in mathematica and its corresponding memory has been allocated, we do
> not wish to allocate memory once again in c. It looks like one option
> is to pass BigList by reference, that is:
>
> SetProperties[MyFunction, HoldAll]
>
> In this case, does mathlink still allocate memory and copy BigList in
> the c side?
>