C++ 如何在Visual Studio(2015)中增加非托管单元测试的堆栈大小?异常代码:C00000FD

C++ 如何在Visual Studio(2015)中增加非托管单元测试的堆栈大小?异常代码:C00000FD,c++,visual-studio,unit-testing,stack-size,C++,Visual Studio,Unit Testing,Stack Size,我正在尝试在VS2015中创建一个单元测试项目。该项目是正确构建和运行的,直到我尝试创建一个大型结构的局部变量 我的代码如下所示: #include "stdafx.h" #include "CppUnitTest.h" using namespace Microsoft::VisualStudio::CppUnitTestFramework; namespace testTxRxTest11ac { TEST_CLASS(UnitTest1) { public:

我正在尝试在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);
        }

    };
}
当我删除大结构定义时,测试通过。添加LargestStructure定义时失败,异常代码为:C00000FD。我在谷歌上搜索了这段代码,发现它是堆栈溢出

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

我还尝试在测试代码和stdafx.cpp中添加#pragma注释(linker,“/STACK:10000000”)。什么都没用


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

虽然这并不能回答您最初的问题,但另一种方法是避免将堆栈与大型类一起使用。只需使用堆,这将使testrunner堆栈空间不可逆转。如果您想保持基于堆栈的方法的相同RAII语义,可以使用std::unique\u ptr。

您是否尝试过使用
/F stack\u size\u(以字节为单位)
?()在堆栈上有大对象是不好的,考虑重构代码。请显示“代码>大型结构< /代码>的定义。单元测试以单元测试转接器分配的堆栈运行。您必须使用RTFM,但很怀疑它是否有一个测试配置设置使其更大。我不记得见过这样的场景。因此,解决方法必须是让测试代码使用CreateThread(),以便代码可以使用更大的堆栈运行。但是写一个测试失败的bug报告当然是最好的。我不明白在哪里写这句话,即使在读完这篇文章之后。你能帮忙吗?非常感谢您对代码重组的建议。现在我只使用new来分配结构,它工作得很好。但我不确定在堆栈上分配大对象是不是不好。据我所知,RAII基于在堆栈上分配所有内容。@MichaelWalz不想共享实际的生产代码。该结构是一组大型多维数组。