数组中的Memcpy只能正常工作1/20个实例
Memcpy from an array is only working 1/20 instances correctly?
我正在将一个项目转换为一组结构。。。然后将该元素从结构数组复制到char数组。。。但只有1/20有效??
typedef struct{
double dTime;
char cMessage[11];
} typeCanMessage;
typeCanMessage *m_cmMessageCB = new typeCanMessage[1000]; //max size can be the CB
memcpy(m_cmMessageCB + *m_posWrite * sizeof(typeCanMessage), &m_cmMessageWrite, sizeof(typeCanMessage));
// WORKS
//memcpy(cStr, &m_cmMessageWrite.cMessage, 11);
// FAILS: every 1/20 works
memcpy(cStr, m_cmMessageCB->cMessage + *m_posWrite * sizeof(typeCanMessage), 11);
指针算术根据指针类型的大小缩放数字。m_cmMessageCB->cMessage
是一个char*指针,sizeof(char)
根据定义是一个,因此将其乘以结构的大小应该会得到正确的值。另一方面,m_cmMessageCB + *m_posWrite
已经将*m_posWrite
乘以sizeof(typeCanMessage)
,因此再次这样做将完全放弃计算。我很惊讶它每20次就工作一次。
相关文章:
- 这个C++编译器优化(在自身的实例上调用对象自己的构造函数)的名称是什么,它是如何工作的?
- 如何使实例化在我的 OpenGL 程序中工作?
- 以下代码如何工作以每次为唯一调用堆栈唯一实例化模板函数?
- 显式实例化无法正常工作
- 从Excel VBA调用C++DLL只能从Visual Studio中的调试实例工作
- CPU寄存器中返回的用户定义类型的C 对象.实例方法如何工作
- 模板类实例化如何与类继承协同工作
- 无限递归模板实例化使用clang时GCC工作正常
- boost :: Spirit :: Qi-与语法结构中的实例成员一起工作
- 如何使链表与类的多个实例一起工作
- GCC 4.9 中的模板实例化错误,在 GCC 4.8 中工作正常
- C++ 类模板显式实例化在 macOS 上工作,在 ubuntu 上不起作用
- 数组中的Memcpy只能正常工作1/20个实例
- OpenGL ES 3实例渲染失败,但在桌面上工作
- 用OSG Cookbook中的draw实例渲染点云数据不工作
- 不是在结构体内部工作,而是在结构体外部工作的自定义类实例
- 在工作精灵系统中添加实例的问题
- 对象的第二个实例不能正常工作
- 我的类的静态实例函数不像我预期的那样工作
- Q工作实例 - C++