上下文环境:wchPassword是一个宽字符的字符串,想要转换成窄的被老代码调用。
代码:
char *chCKeyPassWord;
int nCKeyLength = WideCharToMultiByte(CP_ACP,0,wchPassword,-1,chCKeyPassWord,0,NULL,NULL);
WideCharToMultiByte(CP_ACP,0,wchPassword,-1,chCKeyPassWord,nCKeyLength ,NULL,NULL);
编译环境:vs2010
第一次调用WideCharToMultiByte,求出字符串长度为7,第二次调用WideCharToMultiByte时候会崩溃。
原因是声明指针时候没有分配空间,使用时候崩溃。
可以换成:
char chCKeyPassWord[20];
或 char *chCKeyPassWord = new char[20]; .......delete[] chCKeyPassWord ;