这段代码,运行会出现指针读写错误,不知道为什么?
如果用new 非配内存,则没错误
#include <windows.h>
#include <iostream.h>
DWORD WINAPI Fun1Proc(LPVOID lpParameter);
DWORD WINAPI Fun2Proc(LPVOID lpParameter);int index = 0;
int tickets = 100;
//CRITICAL_SECTION *g_cs = new CRITICAL_SECTION;
CRITICAL_SECTION g_cs;void main()
{
HANDLE hThread1 = NULL;
HANDLE hThread2 = NULL;
hThread1 = CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
hThread2 = CreateThread(NULL,0,Fun2Proc,NULL,0,NULL); if (!hThread1 || !hThread2)
{
return;
}

CloseHandle(hThread1);
CloseHandle(hThread2); InitializeCriticalSection(&g_cs); Sleep(4000); DeleteCriticalSection(&g_cs); return;
}DWORD WINAPI Fun1Proc(LPVOID lpParameter)
{

while (TRUE)
{

EnterCriticalSection(&g_cs);
if (tickets > 0)
{
//Sleep(1);
cout<<"thread1 sell ticket = "<<tickets--<<endl;
LeaveCriticalSection(&g_cs);
}
else
{
LeaveCriticalSection(&g_cs);
break;
}

} return 0;}DWORD WINAPI Fun2Proc(LPVOID lpParameter)
{

while(TRUE)
{
EnterCriticalSection(&g_cs); if (tickets > 0)
{
//Sleep(1);
cout<<"thread2 sell ticket = "<<tickets--<<endl;
LeaveCriticalSection(&g_cs);
}
else
{
LeaveCriticalSection(&g_cs);
break;
}

} return 0;
}