gpt4 book ai didi

c++ - Exe 二进制文件仅在 IDE 之外崩溃

转载 作者:太空宇宙 更新时间:2023-11-03 22:14:58 24 4
gpt4 key购买 nike

OpenCV1.0 项目大量使用 cvBlob 结构(函数参数、blob 列表等)。

struct CvBlob{
float x,y,w,h;
int ID; }

我在 vc9 项目中成功添加了一些成员,直到我发现二进制文件在 Release模式下无法在 IDE 外运行。它在某处销毁期间崩溃(在项目内部执行时不会崩溃)。

新结构:

struct CvBlob{
float x,y,w,h;
int ID,myint; //Works fine.
double* mydouble; //Crushes only outside visual studio.
}

在运行时,mydouble 被用作数组:

blob.mydouble=new double [10];

在我深入研究大型源代码之前,有任何通用建议吗?

编辑:调试在 IDE 外成功运行。

EDIT2: CvSeq 用作主要的 blob 列表容器:cvSeqPush(CvSeq*,CvBlob*), cvSeqRemove(CvSeq*,int)。这里有未定义的行为?

最佳答案

难道您不能扩展CvBlob 结构,然后添加您自己的构造函数和析构函数来管理myDouble 的内存吗?

  struct MyCvBlob : CvBlob {
double* myDouble;
// initialize myDouble to NULL in constructor
MyCvBlob() {
myDouble = NULL;
}
// free the memory pointed to by myDouble if in use
virtual ~MyCvBlob() {
if(myDouble) {
delete [] myDouble;
}
}
};

MyCvBlob blob;
blob.myDouble = new double[10];

关于c++ - Exe 二进制文件仅在 IDE 之外崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16646748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com