WaitForMultipleObjects在64位窗口上崩溃

考虑下面的代码:

for (int i = 0; i < thread_number; i ++) hThreadArray[i] = CreateThread( 0, 0, single_thread_function_name, (LPVOID)i, 0, &dwThreadIdArray[i]); WaitForMultipleObjects(thread_number, hThreadArray, TRUE, INFINITE); 

它在32位平台上正常工作,但在64位上它崩溃。

崩溃发生在WaitForMultipleObjects函数中。

任何人都知道我在做什么错了?

编辑:hThreadArray声明为:

 HANDLE* hThreadArray; hThreadArray = (HANDLE*) malloc (thread_number * sizeof(HANDLE)); 

single_thread_function_name为:

 DWORD WINAPI single_thread_function_name( LPVOID lpParam ){ ..... return 0; } 

hThreadArray不是一个数组,只是一个指针,它肯定会崩溃。 奇怪的是它在32位平台上如何工作。

由于hThreadArray是mableced,也许它不符合64位对齐要求。 试试:

 HANDLE hThreadArray[100] = {0};