正确使用memcpy

时间:2015-08-06 22:30:08

标签: c

这样使用memcpy是否正确?

unsigned char *ptr = mem;
struct st st1[3];
for (int i = 0; i < 3; i++) {
    memcpy(&st1[i], ptr + sizeof(st) * i, sizeof(st));
}

如果不是,请考虑这个例子如何正确使用它?

1 个答案:

答案 0 :(得分:0)

如果mem实际指向构成struct st的有效表示的字节,那么此代码是正确的,除了sizeof(st)应该是sizeof(struct st)或{{1 }}。但是,由于这三个块是连续的,您可以在一个副本中完成所有操作:

sizeof st1[i]

如果memcpy(&st1, ptr, sizeof st1); 没有指向这样的字节,则整个方法都不起作用。