関数ヘッダーを読みましたが、ユースケースに関して正確な違いが何であるかはまだわかりません。
42347 次
6 に答える
48
memcpy()
ある場所から別の場所にコピーします。memset()
すべてのメモリを同じ値に設定するだけです。
例:
memset(str, '*', 50);
上記の行は、文字列 str の最初の 50 文字を * (または memset の第 2 引数) に設定します。
memcpy(str2, str1, 50);
上記の行は、str1 の最初の 50 文字を str2 にコピーします。
于 2009-10-08T06:51:26.277 に答える
15
memset()
指定されたバッファ内のすべてのバイトを同じ値に設定しmemcpy()
、一連のバイトを別の場所からバッファにコピーします。
char a[4];
memset(a, 7, sizeof(char)*4);
/*
* a is now...
*
* +-+-+-+-+
* |7|7|7|7|
* +-+-+-+-+
*/
char b[] = {1,2,3,4};
char c[4];
memcpy(c, b, sizeof(char)*4);
/*
* c is now...
*
* +-+-+-+-+
* |1|2|3|4|
* +-+-+-+-+
*/
于 2009-10-08T06:50:34.720 に答える
3
memset
メモリのブロックを単一の値に設定します。memcpy
ブロックの内容を別のブロックにコピーします。
と の違いに興味があるかもしれませmemcpy
んmemmove
。どちらも同じことを行いますが、後者はソースと宛先が重複していても機能します。
于 2009-10-08T06:51:26.537 に答える
3
memset()
メモリのブロック内のすべてのバイトを特定の char 値に設定するために使用されます。Memset もchar
初期化値であるため、うまく機能します。
memcpy()
メモリ間でバイトをコピーします。コピーされるこのタイプのデータは無関係であり、バイトごとのコピーを作成するだけです。
于 2009-10-08T06:53:21.953 に答える