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; }