0

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

    };
}

当我删除 largeStructure 定义时,测试通过。当我添加 largeStructure 定义时,它失败并出现异常代码:C00000FD。我用谷歌搜索了这段代码,发现它是堆栈溢出。

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

我还尝试在测试代码和 stdafx.cpp 中添加#pragma comment(linker, "/STACK:10000000")。没有任何效果。

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

4

1 回答 1

1

虽然这不能回答您最初的问题,但另一种方法是避免在您的大类中完全使用堆栈。只需使用堆,这将使测试运行程序堆栈空间无关紧要。如果您想保持与基于堆栈的方法相同的 RAII 语义,则可以使用 std::unique_ptr。

于 2018-01-09T16:15:59.370 回答