【发布时间】:2016-07-28 23:56:34
【问题描述】:
wmemcpy 似乎执行与memcpy 相同的操作,但接受wchar_t* 而不是void*。如果这两个代码 sn-ps 应该具有相同的行为,它的存在如何证明?它有什么有用的用途吗?
memcpy(dest, wchar_array, sizeof(wchar_array));
和
wmemcpy(dest, wchar_array, sizeof(wchar_array) / sizeof(wchar_t));
【问题讨论】:
-
一个弱的原因可能是当你有一个
wchar_t的数组时,wmemcpy可能更有效,因为它可以假设合适的对齐方式。 -
@Lashane:术语“Word”不是“2 bytes”的同义词。正如“1 字节”而不是 8 位一样。
-
@Lashane:在没有必要的情况下使用错误的术语几乎没有用处。 “八位字节”这个词只需再输入一个字母。并且声明“word == 2 bytes”只是一个坏主意(您显然注意到了自己)。 “我知道这一点”——问题是大多数初学者都读到这一点,他们认为这样的陈述是普遍有效的。只需查看此处的问题,其中包含由于用户对尺寸做出错误假设而导致的错误。
-
@JordanMelo 我从来没有听说过 wmemcpy,直到你刚刚问到它。我同意它的存在似乎没有道理。我,我永远不会使用它。
-
@Olaf 您正在与“字节”进行一场失败的战斗。这是一个具有多种含义的词(就像“黑客”)。对于至少 99% 的发言者来说,通常使用“字节”表示“8 位”。