这个程序为什么执行到MessageBox(NULL,"","",MB_OK)之后出现内存溢出?

来源:百度知道 编辑:UC知道 时间:2024/06/16 12:51:10
#include <windows.h>
#include <string.h>
#include <stdio.h>

int tmp=0;
DWORD dwThreadID;
HANDLE hThread;
void OneTimeThread(){
tmp++;
if(tmp<10){
MessageBox(NULL,"运行了多次!","信息",MB_OK | MB_ICONHAND );
}
}

void WhileThread(){
while(tmp<10000){
tmp++;
}
}

int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdLine,int nCmdShow){
DWORD dwThreadID1;
DWORD dwThreadID2;
HANDLE hThread1;
HANDLE hThread2;
char*message="";
MessageBox(NULL,"Thread Example","example",MB_OK);
MessageBox(NULL,"Now OneTimeThread","example",MB_OK);
hThread1=CreateThread(0,0,(LPTHREAD_START_ROUTINE)OneTimeThread,0,0,&dwThreadID1);
ResumeThread(hThread1);
MessageBox(NULL,"","",MB_OK);
TerminateThread(hThread1,0);
spri

char*message="";
这一句,你这样写就是把message指向一个字符串常量,虽然你的字符串为空。也就是说你以后就不能在改变message的内容
sprintf(message,"%d",tmp); 你这里要改变message的内容就是改变字符串常量。字符串常量是不能改变的。你把char *message = "";
改成一个字符数组就行了。 比如 char message[256];就行了。