I'm using GDAL 201 to iterate features in a geodatabase feature class and add a new text field, whose value depends on the integer value in another field.
It gives a fairly large memory leak (approx 1GB for every 1m features iterated). I'm not sure where the leak is....any ideas?
The full code:
int main(int argc, char *argv[])
{
// Get the input arguments
char *path = argv[1];
char *layer = argv[2];
char *field = argv[3];
// Open the dataset in update mode
GDALAllRegister();
GDALDatasetH hDS;
hDS = GDALOpenEx(path, GDAL_OF_VECTOR | GDAL_OF_UPDATE , NULL, NULL, NULL);
if( hDS == NULL )
{
printf( "Open failed.\n" );
exit( 1 );
}
// Get the layer
OGRLayerH hLayer;
hLayer = GDALDatasetGetLayerByName(hDS, layer);
OGRFeatureDefnH hFDefn = OGR_L_GetLayerDefn(hLayer);
// Get the field index
int index = OGR_FD_GetFieldIndex(hFDefn, field);
// Create the new field
OGRFieldDefnH hFieldDefn;
hFieldDefn = OGR_Fld_Create("depth_band", OFTString);
OGR_Fld_SetWidth(hFieldDefn, 32);
if( OGR_L_CreateField( hLayer, hFieldDefn, TRUE ) != OGRERR_NONE )
{
printf( "Creating depth_band field failed.\n" );
exit( 1 );
}
OGR_Fld_Destroy(hFieldDefn);
int value; // Field value
char depth_band[32]; //New attribute
// Loop through all features
OGRFeatureH hFeature;
OGR_L_ResetReading(hLayer);
int count = 0;
while( (hFeature = OGR_L_GetNextFeature(hLayer)) != NULL)
{
// Get the depth band value and map it to the depth band description text
value = OGR_F_GetFieldAsInteger(hFeature, index);
switch(value){
case 1:
depth_band = "x <= 0.3m";
break;
case 2:
depth_band = "0.3 < x <= 1m";
break;
case 3:
depth_band = "1 < x <= 3m";
break;
case 4:
depth_band = "3 < x <= 6m";
break;
case 5:
depth_band = "6 < x <= 9m";
break;
case 6:
depth_band = "x > 9m";
break;
}
// Set the new field value
OGR_F_SetFieldString(hFeature, OGR_F_GetFieldIndex(hFeature, "depth_band"), depth_band);
count++;
printf("%d features processed\r", count);
}
GDALClose(hDS);
printf("\nProcessing complete!\n");
}
<br/><hr align="left" width="300" />
View this message in context: <a href="http://osgeo-org.1560.x6.nabble.com/memory-leak-in-gdal-program-tp5220559.html">memory leak in gdal program</a><br/>
Sent from the <a href="http://osgeo-org.1560.x6.nabble.com/GDAL-Dev-f3742093.html">GDAL - Dev mailing list archive</a> at Nabble.com.<br/>