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

      

  • 相关阅读:
    浅谈过拟合问题与梯度爆炸问题
    python 读取excel数据
    KNN与K-MEANS的区别
    jstree使用小结(二)
    jstree使用小结(一)
    webstrom 编码
    自定义分页
    js传递数组到后台
    创建等待图标
    js 日期格式化
  • 原文地址:https://www.cnblogs.com/qing123/p/14737426.html
Copyright © 2020-2023  润新知