我正在为以下类(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/

10-08 21:24