memcpy_s
, wmemcpy_s
バッファー間でバイトをコピーします。 これらの関数は、CRT のmemcpy
wmemcpy
セキュリティ機能の説明に従ってセキュリティが強化されたバージョンの関数です。
構文
errno_t memcpy_s(
void *dest,
size_t destSize,
const void *src,
size_t count
);
errno_t wmemcpy_s(
wchar_t *dest,
size_t destSize,
const wchar_t *src,
size_t count
);
パラメーター
dest
コピー先のバッファー。
destSize
コピー先バッファーのサイズ。memcpy_s
の場合はバイト数、wmemcpy_s
の場合はワイド文字の数 (wchar_t
)。
src
コピー元のバッファー。
count
コピーする文字数。
戻り値
正常終了した場合は 0 を返します。失敗した場合はエラー コードを返します。
エラー条件
dest |
destSize |
src |
count |
戻り値 | dest の内容 |
---|---|---|---|---|---|
any | any | any | 0 | 0 | Not modified |
NULL |
any | any | 0 以外 | EINVAL |
Not modified |
any | any | NULL |
0 以外 | EINVAL |
dest は 0 に設定されます |
any | < count |
any | 0 以外 | ERANGE |
dest は 0 に設定されます |
解説
memcpy_s
から count
バイト src
をコピーします dest
。 wmemcpy_s
ワイド文字を count
コピーします。 ソースリージョンと宛先リージョンが重複している場合、動作 memcpy_s
は未定義です。 重なり合う領域を処理するには、memmove_s
を使用します。
これらの関数では、パラメーターの検証が行われます。 0 以外または src
dest
null ポインターの場合、またはdestSize
それより小さいcount
場合count
は、「パラメーターの検証」で説明されているように、これらの関数は無効なパラメーター ハンドラーを呼び出します。 実行を続行できる場合、これらの関数は戻り EINVAL
値または ERANGE
戻り値に設定 errno
されます。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT のグローバル状態」を参照してください。
必要条件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
memcpy_s |
<memory.h> または <string.h> |
wmemcpy_s |
<wchar.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
// crt_memcpy_s.c
// Copy memory in a more secure way.
#include <memory.h>
#include <stdio.h>
int main()
{
int a1[10], a2[100], i;
errno_t err;
// Populate a2 with squares of integers
for (i = 0; i < 100; i++)
{
a2[i] = i*i;
}
// Tell memcpy_s to copy 10 ints (40 bytes), giving
// the size of the a1 array (also 40 bytes).
err = memcpy_s(a1, sizeof(a1), a2, 10 * sizeof (int) );
if (err)
{
printf("Error executing memcpy_s.\n");
}
else
{
for (i = 0; i < 10; i++)
printf("%d ", a1[i]);
}
printf("\n");
}
0 1 4 9 16 25 36 49 64 81
関連項目
バッファー操作
_memccpy
memchr
, wmemchr
memcmp
, wmemcmp
memmove
, wmemmove
memset
, wmemset
strcpy
, wcscpy
, _mbscpy
strncpy
, _strncpy_l
, wcsncpy
, _wcsncpy_l
, _mbsncpy
, _mbsncpy_l
strncpy_s
, _strncpy_s_l
, wcsncpy_s
, _wcsncpy_s_l
, _mbsncpy_s
, _mbsncpy_s_l
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示