zoukankan      html  css  js  c++  java
  • 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;
    }
    

      

  • 相关阅读:
    模板方法模式
    策略模式
    享元模式
    组合模式
    桥接模式
    外观模式
    代理模式
    装饰者模式
    适配器模式
    类之间的关联关系和依赖关系
  • 原文地址:https://www.cnblogs.com/qing123/p/14737426.html
Copyright © 2011-2022 走看看