OGRFeature的DestroyFeature方法

 Ogr的销毁DestroyFeature方法:

1 void OGRFeature::DestroyFeature( OGRFeature *poFeature )

2 {

3     delete poFeature;

4 }

析构函数中删除了几何对象和空间参考定义, ogrfeature.cpp文件中查看:

 1 OGRFeature::~OGRFeature()

 2 

 3 {

 4     if( poGeometry != NULL )

 5         delete poGeometry;

 6 

 7     for( int i = 0; i < poDefn->GetFieldCount(); i++ )

 8     {

 9         OGRFieldDefn    *poFDefn = poDefn->GetFieldDefn(i);

10         

11         if( !IsFieldSet(i) )

12             continue;

13     

14         switch( poFDefn->GetType() )

15         {

16           case OFTString:

17             if( pauFields[i].String != NULL )

18                 VSIFree( pauFields[i].String );

19             break;

20 

21           case OFTBinary:

22             if( pauFields[i].Binary.paData != NULL )

23                 VSIFree( pauFields[i].Binary.paData );

24             break;

25 

26           case OFTStringList:

27             CSLDestroy( pauFields[i].StringList.paList );

28             break;

29 

30           case OFTIntegerList:

31           case OFTRealList:

32             CPLFree( pauFields[i].IntegerList.paList );

33             break;

34 

35           default:

36             // should add support for wide strings.

37             break;

38         }

39     }

40     

41     poDefn->Release();

42 

43     CPLFree( pauFields );

44     CPLFree(m_pszStyleString);

45     CPLFree(m_pszTmpFieldValue);

46 }
~OGRFeature()

 

你可能感兴趣的:(des)