ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

c – 使用DLL代码时堆损坏

2019-09-03 00:08:02  阅读:205  来源: 互联网

标签:corruption c debugging dll heap


我有一些代码需要放在一个公共库dll中.这个代码是一个类CalibrationFileData,当它作为当前项目的一部分构建时,可以很好地工作.但是,如果在公共库中构建了CalibrationFileData,程序会崩溃,提到堆损坏.

我确保所有分配和解除分配都在类中发生,具有适当的访问器等.但问题不会消失.为了防止它有所不同,我有时会传递对的向量,绝对不是普通的旧数据,但向量操作只能通过访问器进行,因此不应该在模块之间进行任何分配.

我缺少什么?

编辑:向量是这些:

std::vector<std::pair<CvPoint2D32f, CvPoint3D32f>>* extrinsicCorrespondences;
std::vector<int>* pointsPerImage;

我不需要担心深拷贝,因为它们不是堆分配的,对吧?顺便说一句,我尝试使用指向矢量的指针,如上所述,以回避问题,但无论如何它并没有产生任何影响.

解决方法:

检查库和可执行文件之间的编译标志匹配.例如,在Windows上确保您使用相同的C运行时库(CRT)(/ MD vs / MT).检查链接器的警告.

标签:corruption,c,debugging,dll,heap
来源: https://codeday.me/bug/20190902/1794066.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有