c++ CreateThread传递char*参数乱码解决办法

首先要确认char*,是不是从别的函数传过来的,如果是的话,其实它就是1个有可能被多方改变值的指针,

当我们直接传char*过去的时候,线程的回调函数接收到这个指针地址,里面的值,有可能已经变掉了,所以就会出现乱码

解决办法,就是拷贝下这个字符串值,然后再传给CreateThread函数 

void WriteLog(LPCSTR log) {
	//丢线程里,要重新Copy一个字符串,否则线程接到的话,会是乱码,猜测原指针指向的内容已经变更了
	size_t len = strlen(log)+1;
	char* copy = new char[len];
	strcpy_s(copy, len, log);
	CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadWriteLog, (LPVOID)copy, 0, NULL);
}


DWORD ThreadWriteLog(LPVOID lpParameter) {
	char* log = (char*)lpParameter;
	OutputDebugStringA(log);
	return 0;
}

  

posted @ 2021-05-06 23:44  情三  阅读(827)  评论(0编辑  收藏  举报