OpenCV1.0项目大量使用cvBlob结构(函数参数,blob列表等)。
struct CvBlob{
float x,y,w,h;
int ID; }
我在vc9项目中添加了一些成功的成员,直到发现二进制文件无法在发行模式下的IDE外部运行。它在某个地方的破坏期间崩溃(在项目内部执行时不崩溃)。
新结构:
struct CvBlob{
float x,y,w,h;
int ID,myint; //Works fine.
double* mydouble; //Crushes only outside visual studio.
}
在rutime期间,
mydouble
用作数组:blob.mydouble=new double [10];
在深入研究大型源代码之前,有任何一般性建议吗?
编辑:调试在IDE外部成功运行。
编辑2: 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/