【发布时间】:2011-12-03 00:45:01
【问题描述】:
我有一些代码需要放在公共库 dll 中。这段代码是一个类CalibrationFileData,当它作为当前项目的一部分构建时,它工作得非常好。但是,如果CalibrationFileData 内置在公共库中,程序就会崩溃,并提到堆损坏。
我已确保所有分配和解除分配都发生在类中,并使用适当的访问器等。不过,问题不会消失。为了以防万一,我有时会传递成对的向量,绝对不是普通的旧数据,但向量操作仅通过访问器发生,因此不应该跨模块进行任何分配。
我缺少什么吗?
编辑:向量如下:
std::vector<std::pair<CvPoint2D32f, CvPoint3D32f>>* extrinsicCorrespondences;
std::vector<int>* pointsPerImage;
我不应该担心深拷贝,因为它们不是堆分配的,对吧?顺便说一句,如上所述,我尝试使用 pointers 指向向量来回避问题,但无论如何它并没有产生任何影响。
【问题讨论】:
-
我担心向量本身。因为它是一个模板,所以 DLL 和 EXE 可以有不同的矢量代码实例。这可能是 trajanfoe 暗示的 - 不确定。另外,什么向量对?这些对是否包含指向堆分配对象的指针?
标签: c++ debugging dll heap-memory heap-corruption