StrSource = new TCHAR[ _tcslen(pText) ];
CopyMemory(StrSource,pText,_tcslen(pText) * 2);我用上面的代码来复制,但是长度为什么不一样呢?比原来的字符长了5-7个字符呢?
CopyMemory(StrSource,pText,_tcslen(pText) * 2);我用上面的代码来复制,但是长度为什么不一样呢?比原来的字符长了5-7个字符呢?
解决方案 »
- 关于OPENGL的一个思路求助
- 关于重复的ID值的问题
- 客户端使用CAsyncSocket类;服务器端使用CAsyncSocket类侦听,使用CSocket内接收数据,这样会有什么问题呢?!
- 菜鸟:关于图标的问题.
- 怎样改变AfxMessageBox的语言???
- 请教一个问题有关CSocket和CArchive的
- NT Service程序中怎么给外部程序提供接口或者预留接口给外部程序调用
- 为什么收不到数据?
- 在一个窗口程序中,如何临时输出一个变量的值,谢谢!!
- COM组件与MTS的问题
- 弄不懂GetApp,GetActiveWindow,GetDlgItem之类的
- 链接错误,VC编写的VS中运行出现的错误
StrSource = new TCHAR[ _tcslen(pText) + 1]; //最起码的+1
CopyMemory(StrSource,pText,_tcslen(pText) * sizeof(TCHAR)); //*2是找死
StrSource = new TCHAR[ _tcslen(pText) + 1]; //最起码的+1
ZeroMemory(StrSource, dwSize);
CopyMemory(StrSource,pText,_tcslen(pText) * sizeof(TCHAR)); //*2是找死
问题是NEW完后已经比原来长了几个字节
看样子是 pText 没结束符
另外不熟悉的话,不要用CopyMemory来复制字符串
用CopyMemory的话,需要自己加结束符
StrSource[_tcslen(pText) + 1] = 0;
或者Copy多一个字符
CopyMemory(StrSource,pText,(_tcslen(pText) + 1) * sizeof(TCHAR));