我正在将一个项目复制到一个结构数组中……然后将该元素从结构数组复制到一个字符数组中……但只有每 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++ - 来自数组的 Memcpy 只能正确工作 1/20 个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18367336/