多线程进内存管理是引发的奇怪的问题~请各位高手出手帮忙!
问题描述:我在一个程序中起了两个线程,只是简单的进行new和delete操作,没有共享什么东西。可是程序运行了一会儿,就报错退出了,编译器说是写入内存时发生访问冲突。很奇怪!
编译环境:vc++ .net
运行环境:windows 2000 server
源程序:
#include <stdio.h>
#include <Windows.h>
#include <memory.h>
DWORD WINAPI threadFunc1(LPVOID lpParameter)
{
printf("threadFunc1:***!!\n");
char* pTemp1;
while(1)
{
pTemp1=new char;
*pTemp1=2;
delete pTemp1;
pTemp1=NULL;
}
return 0;
}
DWORD WINAPI threadFunc2(LPVOID lpParameter)
{
printf("threadFunc2:***!!\n");
char* pTemp2;
while(1)
{
pTemp2=new char;
*pTemp2=1;
delete pTemp2;
pTemp2=NULL;
}
return 0;
}
void main()
{
unsigned long threadID1;
unsigned long threadID2;
HANDLE handle1;
HANDLE handle2;
handle1=CreateThread(NULL,0,threadFunc1,NULL,0,&threadID1);
if(handle1==NULL)
{
printf("create thread error!!\n");
getchar();
}
handle2=CreateThread(NULL,0,threadFunc2,NULL,0,&threadID2);
if(handle2==NULL)
{
printf("create thread error!!\n");
getchar();
}
while(1)
{
getchar();
Sleep(1000);
}
}