私はVS2015で単体テストプロジェクトを作成しようとしています。プロジェクトは正しくビルドされ、大きな構造のローカル変数を作成するまで実行されます。Visual Studio(2015)でアンマネージユニットテストのスタックサイズを増やす方法は?例外コード:C00000FD
私のコードは次のようになります。私はlargeStructure定義を削除すると
#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定義を追加すると例外コード:C00000FDで失敗します。私はこのコードを探知し、それがスタックのオーバーフローであることがわかりました。
テストプロジェクトのプロパティ(プロパティ - >リンカ - >システム - >スタック予約サイズ)でスタックサイズを増やそうとしました。
また、#pragma comment(リンカ、 "/ STACK:10000000")をテストコードとstdafx.cppに追加しようとしました。何も働かなかった。
このエラーに対処する方法は他にありますか?
あなたは '/ F stack_size_in_bytes'を試しましたか? (https://msdn.microsoft.com/en-us/library/tdkhxaks.aspx)大きなオブジェクトをスタックに置くことは悪いですが、コードを再構築することを検討してください。 –
'largeStructure'の定義を示してください。 –
ユニットテストはユニットテストランナーによって割り当てられたスタックで実行されます。あなたはRTFMをしなければならないでしょうが、それを大きくするためのテスト構成設定があることはかなり疑わしいです。私はそのような設定を見て思い出しません。したがって、テストコードがCreateThread()を使用してコードをより大きなスタックで実行できるようにするための回避策が必要です。しかし、テストに失敗したバグレポートを書くことは確かに最高です。 –