OGRFeature的DestroyFeature方法

时间:2023-03-09 18:56:07
OGRFeature的DestroyFeature方法

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()