如何在Visual Studio(2015)中增加堆栈尺寸的堆栈尺寸?异常代码:C00000FD

How to increase stack size for unmanaged unit test in Visual Studio (2015)? Exception code: C00000FD

本文关键字:堆栈 异常 C00000FD 代码 增加 Visual Studio 2015      更新时间:2023-10-16

我正在尝试在VS2015中创建一个单元测试项目。该项目是正确构建并运行的,直到我尝试创建一个大结构的局部变量。

我的代码看起来像:

#include "stdafx.h"
#include "CppUnitTest.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace testTxRxTest11ac
{
    TEST_CLASS(UnitTest1)
    {
    public:
        TEST_METHOD(TestMethod1)
        {
            largeStructure largeStruct;
            Assert::IsFalse(false);
        }
    };
}

当我删除最大的质量定义时,测试会通过。当我添加最大的理由定义时,它会在异常代码中失败:c00000fd。我搜索了此代码,发现它是堆栈溢出。

我试图增加测试项目的堆栈大小(属性 ->链接器 ->系统 ->堆栈储备大小)。

我还尝试在测试代码和stdafx.cpp中添加#pragma注释(链接,"/stack:10000000")。没有什么可用。

您还有其他建议如何处理此错误?

虽然这没有回答您的原始问题,但另一种方法是避免与大型班级完全使用堆栈。只需使用堆,这将使TestRunner堆栈空间不依赖。如果您想保留与基于堆栈的方法相同的RAII语义,则可以使用std :: unique_ptr。