复制一点字节数

时间:2013-10-07 10:46:41

标签: c++ c memory

如何写这个更简洁但不使用memcpy?

memcpy(pDest, pSrc, 4);

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

因为有时候调用memcpy不是最佳的

3 个答案:

答案 0 :(得分:3)

以下是优秀评论,但由于还没有人发布最明显的答案:

现代编译器非常适合优化memcpy。它可以内联或使用 不同版本的不同数据。

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

通过引入自己的memcpy替代方案,您可能会引入更大/更慢的代码, 或更糟:不可移植的代码,可能会在最不期望的时候破坏。

答案 1 :(得分:2)

#include <cstdint>

*(uint32_t*)pDest = *(uint32_t*)pSrc;

答案 2 :(得分:0)

for c ++:

std::copy(std::begin(pSrc), std::end(pSrc), std::begin(pDest));