メモリ/構造体の内容をコピーする・memcpyは使わない!
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#navi(../)
* 構造体の内容をコピーする・memcpyは使わない! [#s95169f0]
構造体のコピーを作るとき、memcpy関数を使用して複製をつく...
gccはANSI準拠なので、代入式で構造体の複製を作れるのはしっ...
以下にC言語サンプルソースを記します。
#contents
#htmlinsertpcsp(c-top.html,c-sp.html)
*関連記事 [#e2c2bb6f]
-[[メモリの内容を指定した値で初期化する・memset>メモリ/メ...
-[[メモリ内容をコピーする・memcpy>メモリ/メモリ内容をコピ...
-[[構造体の内容をコピーする・memcpyは使わない!>メモリ/構...
-[[メモリの比較を行う・memcmp>メモリ/メモリの比較を行う・...
-[[動的にメモリを取得する・malloc>メモリ/動的にメモリを取...
-[[動的メモリサイズを拡張する・realloc>メモリ/動的メモリ...
-[[malloc,calloc,reallocで取得したメモリを解放する・free>...
-[[指定した文字数分コピーする・memmove>メモリ/指定した文...
-[[指定したバイトの指定個数分メモリを確保する・calloc>メ...
* 代入式を使った構造体の複製 [#u24675c8]
&ref(struct_cp.c); (改行コードLF)
#include <stdio.h>
#include <string.h>
struct INT_MEMBERS {
int a;
int b;
int c;
};
int main(void)
{
struct INT_MEMBERS src, dest;
src.a = 1;
src.b = 2;
src.c = 3;
dest = src; /* struct copy */
printf("dest.a = %d\n", dest.a);
printf("dest.b = %d\n", dest.b);
printf("dest.b = %d\n", dest.c);
return 0;
}
上記のC言語サンプルコードのコンパイルと実行結果を記します。
$ gcc struct_cp.c -o struct_cp
$ ./struct_cp
dest.a = 1
dest.b = 2
dest.b = 3
memcpyを使って構造体のコピーを作らない理由は、バグを少な...
誤ってmemcpyのsrc,destに構造の異なる構造体を指定しコピー...
しかし、代入式の場合であれば、コンパイル時にエラーとなる...
以上、構造体のコピーはmemcpyを使わない!でした。
#htmlinsertpcsp(c-btm.html,c-sp.html)
終了行:
#navi(../)
* 構造体の内容をコピーする・memcpyは使わない! [#s95169f0]
構造体のコピーを作るとき、memcpy関数を使用して複製をつく...
gccはANSI準拠なので、代入式で構造体の複製を作れるのはしっ...
以下にC言語サンプルソースを記します。
#contents
#htmlinsertpcsp(c-top.html,c-sp.html)
*関連記事 [#e2c2bb6f]
-[[メモリの内容を指定した値で初期化する・memset>メモリ/メ...
-[[メモリ内容をコピーする・memcpy>メモリ/メモリ内容をコピ...
-[[構造体の内容をコピーする・memcpyは使わない!>メモリ/構...
-[[メモリの比較を行う・memcmp>メモリ/メモリの比較を行う・...
-[[動的にメモリを取得する・malloc>メモリ/動的にメモリを取...
-[[動的メモリサイズを拡張する・realloc>メモリ/動的メモリ...
-[[malloc,calloc,reallocで取得したメモリを解放する・free>...
-[[指定した文字数分コピーする・memmove>メモリ/指定した文...
-[[指定したバイトの指定個数分メモリを確保する・calloc>メ...
* 代入式を使った構造体の複製 [#u24675c8]
&ref(struct_cp.c); (改行コードLF)
#include <stdio.h>
#include <string.h>
struct INT_MEMBERS {
int a;
int b;
int c;
};
int main(void)
{
struct INT_MEMBERS src, dest;
src.a = 1;
src.b = 2;
src.c = 3;
dest = src; /* struct copy */
printf("dest.a = %d\n", dest.a);
printf("dest.b = %d\n", dest.b);
printf("dest.b = %d\n", dest.c);
return 0;
}
上記のC言語サンプルコードのコンパイルと実行結果を記します。
$ gcc struct_cp.c -o struct_cp
$ ./struct_cp
dest.a = 1
dest.b = 2
dest.b = 3
memcpyを使って構造体のコピーを作らない理由は、バグを少な...
誤ってmemcpyのsrc,destに構造の異なる構造体を指定しコピー...
しかし、代入式の場合であれば、コンパイル時にエラーとなる...
以上、構造体のコピーはmemcpyを使わない!でした。
#htmlinsertpcsp(c-btm.html,c-sp.html)
ページ名: