[Gdal-dev] GDALClose vs delete

William Lyons wlyons at prologic-inc.com
Wed Mar 9 13:19:49 EST 2005


Thanks, once again, for the speedy reply.

William Lyons

-----Original Message-----
From: Frank Warmerdam [mailto:fwarmerdam at gmail.com] 
Sent: Wednesday, March 09, 2005 12:54 PM
To: William Lyons
Cc: gdal-dev at xserve.flids.com
Subject: Re: [Gdal-dev] GDALClose vs delete

On Wed, 9 Mar 2005 12:41:45 -0500, William Lyons
<wlyons at prologic-inc.com> wrote:
> Frank and List,  
> The documentation for GDALClose() mention that it should be used for
> sets opened with GDALOpenShared(). 
> And that C++ delete should be used for data sets opened with
> But, which should be used to close datasets that are the product of a
> GDALCreate() or GDALCreateCopy() call? 


In theory a delete is fine for the results of GDALCreate() or
GDALCreateCopy().  However, you can also safely use
GDALClose() for all these, and I normally do.  The special
issue with GDALOpenShared() is that GDALClose() first
dereferences the dataset and then deletes it if the reference
count has dropped to zero.  

Also, in a windows build environment where different DLLs 
have different heaps, using delete outside the DLL in which 
the new took place can be very dangerous.  So I also avoid
use of delete for that reason. 

Best regards,

I set the clouds in motion - turn up   | Frank Warmerdam,
warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | Geospatial Programmer for Rent

More information about the Gdal-dev mailing list