C++记忆到错位的记忆
C++ memcpy to a malloc'ed memory
我有以下代码,它运行良好:
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))
。
相关文章:
- 松弛原子与无同步情况下的记忆连贯性
- 什么是临时错位
- 递归函数有效,但无法记忆
- 如何将记忆应用于此递归函数?
- 共享记忆:让我们谈谈它的特殊性
- 为什么nlohmann不释放记忆
- CPP 中的瓦尔格林德和记忆泄漏:"Conditional jump or move depends on uninitialised values"
- C++17 多态记忆资源不起作用
- 我是否漏了记忆?
- 关于记忆后这种递归关系的时间复杂度
- 记忆栅栏和记忆屏障是一样的吗
- 使用记忆在 C++ 中实现 Knapstack
- 无论如何可以将webm / mp4文件编译/记忆为.exe程序吗?(C++)
- 如何在硬币兑换中添加记忆
- 动态记忆的删除是如何真正起作用的
- C++遗传,记忆问题
- 使用未声明的标识符"nothrow";你是说"扔"吗?记忆
- Qt驱动器下拉列表仅列出USB记忆棒
- 我找不到瓦尔格林德告诉我的记忆链接
- C++记忆到错位的记忆