Я пытаюсь создать проект Unit Test в 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. Я погуглил этот код и обнаружил, что это переполнение стека.
Я попытался увеличить размер стека в свойствах тестового проекта (Свойства -> Линкер -> Система -> Резервный размер стека).
Я также попытался добавить комментарий #pragma (компоновщик, «/ STACK: 10000000») в тестовый код и в stdafx.cpp. Ничего не сработало.
У вас есть другие предложения, как бороться с этой ошибкой?
Хотя это не отвечает на ваш первоначальный вопрос, другой подход заключается в том, чтобы вообще не использовать стек вместе с вашим большим классом. Просто используйте кучу, которая сделает пространство стека testrunner ненужным. Вы можете использовать std :: unique_ptr, если хотите сохранить ту же семантику RAII, что и при использовании стекового подхода.
Других решений пока нет …