2

for ループを使用して 3 つのスレッドを作成しようとしています。以下は私のコードスニペットです:

DWORD WINAPI ThreadProc0(LPVOID param)
{
   return 0; 
}
DWORD WINAPI ThreadProc1(LPVOID param)
{
    return 0;
}
DWORD WINAPI ThreadProc2(LPVOID param)
{
    return 0;
}

int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
   DWORD threadId = 0;
   int max_number=1;
   //Start the threads
   typedef DWORD (WINAPI * THREADPROCFN)(LPVOID lpParameter);
   THREADPROCFN function[3] = {ThreadProc0,ThreadProc1,ThreadProc2} ;
   for (int i = 0; i < max_number; i++) 
   {
      CreateThread( NULL,
                    0,
                    (LPTHREAD_START_ROUTINE)&function[i],
                    (LPVOID) i,
                    0,
                    NULL
                   );
   }
}

コードは正常にコンパイルされますが、実行すると、solution.exe が動作を停止したというエラーが表示されます。コードをデバッグすると、次のエラーが発生します。

Solution.exe の 0x0034fd00 で未処理の例外: 0xC0000005: アクセス違反。

助けを待っています。

4

1 に答える 1