其他分享
首页 > 其他分享> > c – 使用DLL代码时堆损坏

c – 使用DLL代码时堆损坏

作者:互联网

我有一些代码需要放在一个公共库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