我有以下代码,它运行良好:
int Size ;
CString Message ;
BYTE Buffer[256] ;
Message = _T("Some Text") ;
Size = Message.GetLength() * sizeof(WCHAR) ;
memcpy(Buffer,&Message,Size) ;
但当我把它改成这个:
int Size ;
CString Message ;
BYTE* Buffer ;
Buffer = (BYTE*) malloc(256) ;
Message = _T("Some Text") ;
Size = Message.GetLength() * sizeof(WCHAR) ;
memcpy(Buffer,&Message,Size) ;
然后检查缓冲区数据,它填充了一些随机垃圾字节
怎么了?
CString不是POD类型,不能按位复制。
看来你必须将范例从C转换到C++
从文件上看http://msdn.microsoft.com/en-us/library/aa300569(v=vs.60).aspx支持转换:
LPCTSTR raw = (LPCTSTR) Message;
// now memcpy from `raw`
BYTE Buffer[256]
创建一个由256个BYTE
大小的元素组成的数组,而不考虑BYTE
的大小。CCD_ 4则分配256字节的存储器。尝试malloc(256 * sizeof(BYTE))
。