我正在为以下类(class)使用GoogleTest编写测试,但出现上述错误。
class Base
{
// Other Functions;
CSig objSig[50];
}
CSig类如下:
class CSig
{
//... constructor, destructor(empty) and some functions
CMod *objMod;
CDemod *objDemod;
}
CSig :: CSig
{
bIsInitialised = false;
for (int i=0; i<MAX_NUM; i++)
{
PStrokePrev[i] = 0.0;
}
}
但是,当我丢弃
CSig objSig[50]
时,测试运行良好。我该怎么做才能解决这个问题?另外,我需要在基类中包含
CSig objSig[50]
。 最佳答案
SEH(结构化异常处理)异常不是可以使用c++语言构造(try-catch)处理的C++异常,但它是从Windows本身引发的,并指出了一些基本缺陷。 SEH异常非常令人讨厌,因为它们不会导致正常的堆栈退卷,这可能导致未关闭的文件或未解锁的互斥锁,通常应由拥有对象的析构函数将其清除。
访问不属于当前进程的内存时,我遇到了SEH异常,因此我建议查看CSig的构造函数和析构函数中与内存相关的指令。
您可以阅读有关SEH的信息,例如here
关于c++ - 在测试主体中引发了代码为0xc0000005的SEH异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13157671/