0

我正在将一个项目处理为一个结构数组......然后将该元素从结构数组复制到一个字符数组......但只有每 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); 
4

1 回答 1

2

指针算术按指针类型的大小缩放数字。m_cmMessageCB->cMessage是一个 char* 指针,并且sizeof(char)根据定义是一个,因此将它乘以结构的大小应该得到正确的值。另一方面m_cmMessageCB + *m_posWrite,已经乘以*m_posWritesizeof(typeCanMessage)因此再次执行将完全放弃计算。我很惊讶它甚至每 20 次工作一次。

于 2013-08-21T21:09:07.843 回答