gdal中类的内存管理

今天遇到一个很奇怪的问题,关于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大小不一样的原因还是不清楚,希望有人能解释

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 12,391评论 0 27
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 8,755评论 0 6
  • 一、(一共三十题) 1.main() { int a[5]={1,2,3,4,5}; int *ptr=(int ...
    iOS_Alex阅读 4,589评论 0 0
  • 一、(一共三十题) 1.main() { int a[5]={1,2,3,4,5}; int *ptr=(int ...
    iOS_Alex阅读 4,101评论 0 2
  • 青春一个多么痛的季节 青春给予了你什么爱,还是痛苦 青春如果可以长些该多好 青春给欲我只是无谓的时间 如果可以在来...
    冰凉诗雨阅读 1,643评论 0 0

友情链接更多精彩内容