Re: [INTERFACES] ECPG: FETCH ALL|n FROM cursor - Memory allocation?
Christof Petig <christof@petig-baender.de>
From: Christof Petig <christof@petig-baender.de>
To: Michael Meskes <meskes@postgresql.org>
Cc: Lee Kindness <lkindness@csl.co.uk>, PostgreSQL Interfaces <pgsql-interfaces@postgresql.org>, Mark Aves <maves@csl.co.uk>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2002-05-06T07:37:18Z
Lists: pgsql-hackers
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).
Christof