C言語における共有参照に起因するようなバグの例
例えばstrcpy関数で文字列のコピーを行ったときに、コピー元の領域をコピー先の領域が一部重複するようなもの
参考(https://hikotech.net/post-100/)
それ以外にC言語で同じ領域を参照することで起きるバグはどのようなものがありますか。

回答3件
あなたの回答
tips
プレビュー
C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。
参照は、プログラミングにおいて変数や関数といったメモリ空間上での所在を指示するデータのことを指します。その中にはデータ自体は含まれず、他の場所にある情報を間接的に指示するプログラムです。
プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。
ポインタはアドレスを用いてメモリに格納された値を"参照する"変数です。
C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。
C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。
参照は、プログラミングにおいて変数や関数といったメモリ空間上での所在を指示するデータのことを指します。その中にはデータ自体は含まれず、他の場所にある情報を間接的に指示するプログラムです。
プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。
ポインタはアドレスを用いてメモリに格納された値を"参照する"変数です。
C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。
0グッド
1クリップ
投稿2021/10/22 07:18
C言語における共有参照に起因するようなバグの例
例えばstrcpy関数で文字列のコピーを行ったときに、コピー元の領域をコピー先の領域が一部重複するようなもの
参考(https://hikotech.net/post-100/)
それ以外にC言語で同じ領域を参照することで起きるバグはどのようなものがありますか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
バグはどのようなものがありますか。
それについてはノーコメントですが、今時ならC99規格以上が使えるので "restrict" というキーワードである程度判別できるでしょう。
※マニュアル等がC99に則っているかは別途注意が必要。
例えば、重複を許さない memcpy と、許す memmove なら、C99以上的には次のような宣言になっていて、restrict の有無で判別できます。
なお「ノーコメント」と言ったのは、「面倒だから書かない」とか、「それくらい自分で調べろ」とかそういう意味ではなく、「『どのようなバグになるか』を考える意味がない」からです。
restrict を指定してあるにも関わらず重複があれば、C言語的に「未定義」言い方を変えれば「プログラム全体が正常動作する保証が一切なくなる」なので、部分的に何が起こるか考えてもしようがないのです。
投稿2021/10/23 03:50
総合スコア1681
0
GoogleでC言語 共有領域 破壊を検索で、約 718,000 件が表示されますので、最初の百個ぐらいを読んでみてjはいかがでしょうか。
投稿2021/10/22 10:17
総合スコア24672
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。