c++ - 来自数组的 Memcpy 只能正确工作 1/20 个实例?

标签 c++ memcpy

我正在将一个项目复制到一个结构数组中……然后将该元素从结构数组复制到一个字符数组中……但只有每 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/

相关文章:

c++ - 创建大图像

由于 memcpy,C++ ifstream::read 变慢

memcpy() 上的 c 段错误

c++ - 错误 : expected primary-expression before char

c - c中2个无符号字符*之间的memcpy

c - memcpy 无法复制所有数据

c - 使用 memcpy 进行内联线程调度

c++ - 无法理解 Pascal's Triangle for C++ 中的这一行

c++ - getaddrinfo 问题

C++ 将 RGBA 打包为 unsigned int