Ogr的销毁DestroyFeature方法:
void OGRFeature::DestroyFeature( OGRFeature *poFeature )
{
delete poFeature;
}
析构函数中删除了几何对象和空间参考定义, ogrfeature.cpp文件中查看:
OGRFeature::~OGRFeature() {
if( poGeometry != NULL )
delete poGeometry; for( int i = ; i < poDefn->GetFieldCount(); i++ )
{
OGRFieldDefn *poFDefn = poDefn->GetFieldDefn(i); if( !IsFieldSet(i) )
continue; switch( poFDefn->GetType() )
{
case OFTString:
if( pauFields[i].String != NULL )
VSIFree( pauFields[i].String );
break; case OFTBinary:
if( pauFields[i].Binary.paData != NULL )
VSIFree( pauFields[i].Binary.paData );
break; case OFTStringList:
CSLDestroy( pauFields[i].StringList.paList );
break; case OFTIntegerList:
case OFTRealList:
CPLFree( pauFields[i].IntegerList.paList );
break; default:
// should add support for wide strings.
break;
}
} poDefn->Release(); CPLFree( pauFields );
CPLFree(m_pszStyleString);
CPLFree(m_pszTmpFieldValue);
}
~OGRFeature()