Okay, lets see if i've got this right...
If I allocate the memory before the FETCH then I (naturally) free
it. However If I NULL initialise the pointer then libecpg will
allocate the memory and I must NOT free it - libecpg will free it
I think this highlights the need for some documentation on this
Regards, Lee Kindness.
Christof Petig writes:
> Michael Meskes wrote:
> > On Thu, Apr 25, 2002 at 12:42:00PM +0100, Lee Kindness wrote:
> >>Should the input pointers be NULL initialised? How should the memory
> >>be freed?
> > A simple free() will do. You also can free all automatically
> > allocated memory from the most recent executed statement by calling
> > ECPGfree_auto_mem(). But this is not documented and will never be.
> > The correct way is to free(array1) and free(array2) while libecpg will
> > free the internal structures when the next statement is executed.
> Never, never mix these two! ECPGfree_auto_mem will free even memory
> which has already been free'd by the user, perhaps we should get rid of
> this method (any allocated memory regions are stored in a list, if you
> never call ECPGfree_auto_mem, this list grows and grows).
In response to
pgsql-hackers by date
|Next:||From: Hannu Krosing||Date: 2002-05-06 10:48:32|
|Subject: Re: Native Windows, Apache Portable Runtime|
|Previous:||From: Cyril VELTER||Date: 2002-05-06 08:21:37|
|Subject: Re: Native Windows, Apache Portable Runtime |
pgsql-interfaces by date
|Next:||From: Michael Meskes||Date: 2002-05-06 10:59:58|
|Subject: Re: [INTERFACES] ECPG: FETCH ALL|n FROM cursor - Memory allocation?|
|Previous:||From: Kenny Carruthers||Date: 2002-05-06 07:53:47|
|Subject: Using C functions with triggers|