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? >