関数のアドレスと空ポインタの比較 公開日:2021年6月5日 プログラミング技術情報 フック関数など、特に必要がなければ、実体は何も定義しないまま、関数のシンボルを0番地に配置しておき、必要になった時点で実際の関数で置き換えるといった技法がよく使われます。 具体的には、GNUのリンカスクリプトでPROVI […] 続きを読む
[迷信] 構造体はクラスではない 公開日:2021年6月5日 C/C++迷信集プログラミング技術情報 C++における構造体とクラスは似て非なるものと考える人は少なくありません。確かに構造体とクラスは同義ではありませんが、構造体がクラスではないかというとそれも違います。C++では、構造体は一種のクラスです。JIS X301 […] 続きを読む
[迷信] fflushで入力バッファをクリア 公開日:2021年6月4日 C/C++迷信集プログラミング技術情報 よくある状況として、 [crayon-673ef84a5a4c0110024832/] のようにすると、入力バッファに改行文字が残ってしまうため、直後にgetchar関数などを呼び出すと期待した動作にならないことがありま […] 続きを読む
[迷信] freeでメモリを開放する 公開日:2021年6月4日 C/C++迷信集プログラミング技術情報 今回は、技術的な話題というより、むしろ国語に関する話題です。タイトルに示したように、最近は「メモリを開放」という表現を、ネット上だけでなく書籍でも非常に多く見かけます。しかし、mallocで割り付けたメモリブロックに対し […] 続きを読む
[迷信] FILE型は構造体 更新日:2021年6月7日 公開日:2021年6月4日 C/C++迷信集プログラミング技術情報 今回は、C言語でファイル操作によく使うFILE型に関する迷信です。FILE型と書きましたが、このように呼ぶ人は世間では意外に少なく、多くの人はFILE構造体と呼びます。では、FILE型は常に構造体であると考えてよいのでし […] 続きを読む
[迷信] 2の累乗による割り算と右シフトは等価 公開日:2021年6月3日 C/C++迷信集プログラミング技術情報 多くの場合、実際に試してみればすぐに分かることですが,2nによる割り算と右シフトは、常に等価になるとは限りません。しかし、この問題は規格上処理系定義の要素が複雑に絡み合っているため、注意深く考えないと全体像をとらえること […] 続きを読む
[迷信] freeにNULLを渡すとクラッシュする 公開日:2021年6月3日 C/C++迷信集プログラミング技術情報 まずは次のコードをご覧ください。 [crayon-673ef84a5a70b250648948/] 上のコードを見て何の違和感も感じないようであれば、あなたは迷信にとらわれている可能性があります。論より証拠ですので、JI […] 続きを読む
[迷信] 実数型とは浮動小数点型のことである 公開日:2021年6月2日 C/C++迷信集プログラミング技術情報 C言語やC++の入門書や入門サイトの多くは、float型やdouble型などの浮動小数点型を、整数ではなく「実数」を表現するための型として紹介しています。そして、これら浮動小数点型のことを「実数型」と呼んでいることも少な […] 続きを読む
[迷信] コンパイラはプログラマの心を察してくれる 公開日:2021年6月2日 C/C++迷信集プログラミング技術情報 これを迷信集に入れるべきかどうか迷ったのですが、口にこそ出さないものの、実際にこのように信じているとしか考えられないプログラマが少なからず存在することは事実です。彼らは、あたかもブロークンな英語のように、正しい文法で書こ […] 続きを読む
[迷信] argv[0]はプログラム名 更新日:2021年6月15日 公開日:2021年6月2日 C/C++迷信集プログラミング技術情報 main関数がargcとargvの2つの仮引数を受け取る場合、argv[0]がプログラム名を表す文字列を指すというのは入門書にも載っています。しかし、常にそうかというと、実はそうではありません。今回はフリースタンディング […] 続きを読む