#include <iostream.h>
#include <windows.h>
DWORD WINAPI fun1Proc(
LPVOID lpParameter // thread data
); //声明所创建线程的入口函数
int i=0;
int main()
{
//int i=0;
//定义线程的句柄
HANDLE myHan;
myHan=CreateThread(NULL,0,fun1Proc,NULL,0,NULL);//创建线程
CloseHandle(myHan);
while (i++<1000)
cout<<"main thread is running!"<<endl;
//Sleep(10);//主线程休眠10ms,让出时间片,系统会让等待运行的线程运行
return 0;
}
DWORD WINAPI fun1Proc(
LPVOID lpParameter // thread data
)
{
//int i=0;
while(i++<1000)
cout<<"new thread is running!"<<endl;
return 0;//需要一个返回值
}我电脑上运行会内存泄露,咋回事?
#include <iostream.h>
#include <windows.h>
DWORD WINAPI fun1Proc(
LPVOID lpParameter // thread data
); //声明所创建线程的入口函数
int i=0;
int main()
{
//int i=0;
//定义线程的句柄
HANDLE myHan;
myHan=CreateThread(NULL,0,fun1Proc,NULL,0,NULL);//创建线程
WaitForSingleObject(myHan,INFINITE);
CloseHandle(myHan);
while (i-->0)
cout<<"main thread is running!"<<endl;
//Sleep(10);//主线程休眠10ms,让出时间片,系统会让等待运行的线程运行
return 0;
}
DWORD WINAPI fun1Proc(
LPVOID lpParameter // thread data
)
{
//int i=0;
while(i++<1000)
cout<<"new thread is running!"<<endl;
return 0;//需要一个返回值
}
这样试试,线程访问同一资源最好同步..
你又没有动态分配内存,
还有你看你IDE的输出窗口有没有 被动由操作系统释放内存
应该是进程WaitforSingleObject,当线程退出,进程再退出吧。
运行时出提示该内存不能为write
#include <windows.h>DWORD WINAPI fun1Proc(
LPVOID lpParameter // thread data
); //声明所创建线程的入口函数
int i = 0;
int main()
{
//int i=0;
//定义线程的句柄
HANDLE myHan;
myHan = CreateThread(NULL, 0, fun1Proc, NULL, 0, NULL);//创建线程
CloseHandle(myHan);
while (InterlockedExchangeAdd((long *)&i, 1) < 1000)
std::cout << "main thread is running!" << std::endl;
//Sleep(10);//主线程休眠10ms,让出时间片,系统会让等待运行的线程运行
return 0;
}
DWORD WINAPI fun1Proc(
LPVOID lpParameter // thread data
)
{
//int i=0;
while(InterlockedExchangeAdd((long *)&i, 1) < 1000)
std::cout << "new thread is running!" << std::endl; return 0;//需要一个返回值
}
main退出后, 你认为控制台的句柄, 资源还会有可能存在么?
既然被释放, 假如释放后, CPU的时间片才分给线程, 此时线程刚好进入printf函数, 此时这个函数访问的控制台资源已经由于main退出而释放了, 然后不能为write或read都是很正确的.
偶尔不报错, 是你运气不错.
报错也不是你的运气不好, 而是设计出错.
应该是crt的问题。