私はこのコードを持っています:
#ifdef _DEBUG
#define _SECURE_SCL 1
#define _SECURE_SCL_THROWS 1
#else
#define _SECURE_SCL 0
#define _SECURE_SCL_THROWS 0
#endif
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> v1;
v1.push_back(33);
vector <int>::iterator it1 = v1.begin();
try
{
it1++;
it1++;
}
catch (...)
{
cout << "vector is empty!!" << endl;
}
return 0;
}
非常に単純なものです。境界を越えようとし、例外をキャッチしたいと思います。ただし、プログラムは単に「デバッグアサーションに失敗しました!」とクラッシュします。2番目の増分で、それはなぜですか?
この例はhttp://msdn.microsoft.com/en-us/library/aa985965(v=vs.100).aspxから取得したもので、チェックしたイテレーターをオンに設定するためのマクロを追加しました。私はデバッグモードで、/ EHscがオンになっていて、/MDdもオンになっています