帮忙看看这段代码那里有问题?
#include <stdio.h>
#include <windows.h>
int iCounter=0;
CRITICAL_SECTION gCriticalSection;
DWORD threadA(void* pD)
{
int iID=*(void*) pD;
for (int i=0;i<8;i++)
{
EnterCriticalSection(&gCriticalSection);
int iCopy=iCounter;
Sleep(1000);
iCounter=iCopy+1;
printf("thread %d:%d\n",iID,iCounter);
LeaveCriticalSection(&gCriticalSection);
}
return 0;
}
void main()
{
DWORD ThreadId[3];
HANDLE hThread[3];
InitializeCriticalSection(&gCriticalSection);
hThread[0]=CreateThread(0,0,(LPTHREAD_START_ROUTINE)threadA,(void*)1,
0,&ThreadId[0]);
hThread[1]=CreateThread(0,0,(LPTHREAD_START_ROUTINE)threadA,(void*) 2,
0,&ThreadId[1]);
hThread[2]=CreateThread(0,0,(LPTHREAD_START_ROUTINE)threadA,(void*) 3,
0,&ThreadId[2]);
WaitForMultipleObjects(3,hThread,TRUE,INFINITE);
DeleteCriticalSection(&gCriticalSection);
}
为什么运行的时候说是非法访问
多谢