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()
复制代码

 

posted @   太一吾鱼水  阅读(788)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示