

「vector subscript out of range line
932」のダイアログが出ているのですが、アプリケーションは動作しています。どういった場合にこうなるのでしょうか教えてください。  
また、再発した時には「再試行」を選択してデバックにて呼び出しの履歴を見てみようと思うのですが、他に良い方法があれば教えてください。  
環境はWin8Pro VS2010 C++


CC BY-SA 3.0
2015-09-29T00:21:06.813
17042
2016-10-18T17:20:49.187
2015-09-29T02:55:00.140
7291
12480
question
c++ visual-studio
vector subscript out of range line 932 停止しない


VC++のvectorのソースを見ると、`vector::operator[](size_type)`に範囲外の位置を指定すると出るようになっています。

* * *

> いえいえ、気が付いたらダイアログは出ているのですが(無視を含む）何も選択しない状態で、アプリケーションは動いているのです。

エラーが起きたスレッドとは別のスレッドが動いているのではないでしょうか？  
以下のサンプルプログラムでは、サブスレッドは動き続けます。

[code]

    #include <Windows.h>
    #include <process.h>
    #include <vector>
    #include <iostream>
    
    unsigned int __stdcall sub_thread_func(void *)
    {
        for (unsigned int i = 0; i < 100; ++i) {
            std::cerr << "sub thread i = " << i << std::endl;
            Sleep(1000);
        }
    
        _endthreadex(0);
        return 0;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        HANDLE sub_thread_handle = (HANDLE)_beginthreadex(NULL, 0, &sub_thread_func, NULL, 0, NULL);
        if (!sub_thread_handle) {
            perror("sub thread");
            return 1;
        }
        while (true) {
            DWORD wait_result = WaitForSingleObject(sub_thread_handle, 1000);
            if (wait_result != WAIT_TIMEOUT) {
                break;  
            }
            std::vector<int> vec;
            int i = vec[0];
        }
        return 0;
    }
    
[/code]


CC BY-SA 3.0
2015-09-29T00:37:32.397
17044
2015-09-29T03:55:41.337
2015-09-29T03:55:41.337
7291
7291
17042
answer