1

怎么可能写得更简洁但不使用 memcpy?

memcpy(pDest, pSrc, 4);

for (int i = 0; i < 4; i++)
   pDest[i] = pSrc[i]; 

因为调用 memcpy 有时不是最优的

4

2 回答 2

3

以下是极好的评论,但由于没有其他人发布最明显的答案:

现代编译器非常擅长优化memcpy. 它可以内联它,或者对不同的数据使用不同的版本。

首先测量您的代码性能并据此得出结论。如果memcpy似乎是您代码的瓶颈,您可能需要重新考虑您的算法。

通过向您介绍自己的替代方案,memcpy可能会引入更大/更慢的代码,或者更糟糕的是:不可移植的代码可能会在最意想不到的时候中断。

于 2013-10-07T11:38:08.013 回答
2
#include <cstdint>

*(uint32_t*)pDest = *(uint32_t*)pSrc;
于 2013-10-07T10:49:14.917 回答