C ++ memcpy到malloc的内存

时间:2013-08-04 14:48:03

标签: c++ malloc memcpy


我有以下代码,它运作良好:

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) ;

然后检查缓冲区数据,它填充了一些随机垃圾字节

怎么了?

2 个答案:

答案 0 :(得分:4)

CString不是POD类型,不能按位复制。

似乎你必须将范例从C切换到C ++

从文档中看似http://msdn.microsoft.com/en-us/library/aa300569(v=vs.60).aspx支持转换:

LPCTSTR raw = (LPCTSTR) Message;
// now memcpy from `raw`

答案 1 :(得分:2)

BYTE Buffer[256]创建一个包含256个BYTE大小元素的数组,无论BYTE的大小如何。 另一方面,malloc(256)分配256字节的内存。试试malloc(256 * sizeof(BYTE))