int nKeyWordsLen=lstrlen(StringsBufferTmp);
char* szKeyWordsCht = new char[nKeyWordsLen+1];
ZeroMemory(szKeyWordsCht,nKeyWordsLen+1);
//简体转换到繁体
LCMapString(0x0804,
LCMAP_TRADITIONAL_CHINESE,
StringsBufferTmp,
nKeyWordsLen,
szKeyWordsCht,
nKeyWordsLen+1
);
1、LPBYTE szKeyWordsAnsiCht = (unsigned char*)szKeyWordsCht;
2、delete [] szKeyWordsCht; 3、return szKeyWordsAnsiCht;
当我走到1的时候,szKeyWordsAnsiCht 有值,但是当走完2以后,3中的szKeyWordsAnsiCht 就时乱码了
char* szKeyWordsCht = new char[nKeyWordsLen+1];
ZeroMemory(szKeyWordsCht,nKeyWordsLen+1);
//简体转换到繁体
LCMapString(0x0804,
LCMAP_TRADITIONAL_CHINESE,
StringsBufferTmp,
nKeyWordsLen,
szKeyWordsCht,
nKeyWordsLen+1
);
1、LPBYTE szKeyWordsAnsiCht = (unsigned char*)szKeyWordsCht;
2、delete [] szKeyWordsCht; 3、return szKeyWordsAnsiCht;
当我走到1的时候,szKeyWordsAnsiCht 有值,但是当走完2以后,3中的szKeyWordsAnsiCht 就时乱码了
这个赋值操作后,szKeyWordsAnsiCht和szKeyWordsCht指向的是同一段缓存.
szKeyWordsCht释放了,其指向的值是无效值,自然szKeyWordsAnsiCht指向的也是无效值.
char* szKeyWordsCht = new char[nKeyWordsLen+1];
ZeroMemory(szKeyWordsCht,nKeyWordsLen+1);
//简体转换到繁体
LCMapString(0x0804,
LCMAP_TRADITIONAL_CHINESE,
StringsBufferTmp,
nKeyWordsLen,
szKeyWordsCht,
nKeyWordsLen+1
);
CString mmmm;
mmmm.Format("%s",szKeyWordsCht);
LPBYTE szKeyWordsAnsiCht = (LPBYTE)(LPCSTR)mmmm;/* LPBYTE szKeyWordsAnsiCht = (unsigned char*)szKeyWordsCht;*/// if (ThreadStatus == FALSE)
// {
delete [] szKeyWordsCht;
/* }*/ return szKeyWordsAnsiCht;
我这样修改的话,值好像改变了啊,因为最后我想要的结果改变了,请问这是为什么呢?谢谢了!
“Unhandled exception in ***.exe:0xC0000005:Access Violation”,请问这是为什么呢?谢谢!
CHAR *pszAnsi = "简体";
WCHAR *pwszTemp = NULL;
CHAR *pszBig5 = NULL;
int nLen = 0;nLen = MultiByteToWideChar(936, 0, pszAnsi, -1, NULL, 0);
pwszTemp = new WCHAR[nLen+1];
pwszTemp[0] = L'\0';
MultiByteToWideChar(936, 0, lpszAnsi, -1, pwszTemp, nLen);
nLen = WideCharToMultiByte(950, 0, pwszTemp, -1, NULL, 0, NULL, NULL);
pszBig5 = new CHAR[nLen+1];
pszBig5[0] = '\0';
WideCharToMultiByte(950, 0, pwszTemp, -1, pszBig5, nLen, NULL, NULL);
delete pwszTemp;delete pszBig5;