今天遇到一个很奇怪的问题,关于GDAL库的使用。
在一个dll中调用GDAL中的OGRSpatialReference类,在这个dll中的使用sizeof求OGRSpatialReference的大小,与在dll外,使用sizeof求得OGRSpatialReference的大小竟然不一样,一个是40,一个是48。导致在dll外动态分配的OGRSpatialReference内存,在dll内删除会出错。
于是有了以下几种猜测。
1、gdal的版本问题,可能不是要VS2008编译的gdal库,但检查了gdal的库的版本,是没有问题。
2、工程配置问题,对比了dll与调用该dll的主程序配置,没有发现异常的地方。
3、内存对齐,但使用的是同一个OGRSpatialReference类,怀疑是变量的先后声明导致的问题,说不通。
最后的解决方案是,在dll内重新编写个接口类,在这个类中分配内存,然后在这个dll内删除内存。问题解决。但在dll内与外求得的OGRSpatialReference大小不一样的原因还是不清楚,希望有人能解释
gdal中类的内存管理
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...