見える、メモリの中身が見えるぞ!
厄介なバグの症例と対策を解説した、極めて実践的な一冊。
プログラミングの「常識」が分かります。
特にメモリ関係の解説が大変優れています。
文字列処理、malloc、そしてポインタ等で苦しんだ人にオススメです。
入門書が終わったら、ぜひ本書を読んで「メモリを見抜く能力」を身に付けて欲しいですね。
メモリという地雷原を行く
本書はバグを通じて、正しいプログラミングを学べるようになっています。
C言語は便利で強力な反面、ミスを起こしやすい仕様もあり、時として厄介なバグを生み出します。
そして究明に手こずり、残業する羽目になり、ストレスで暴飲暴食し、健康診断でヤバい数値がでると…
さて本書の特筆すべき点として、メモリ関連の解説がとても充実しています。
なんというか、C言語ならメモリの話は切っても切れないですね。
C言語はフリーダムな仕様につき、良くも悪くも、メモリをやりたい放題できます。
だからうっかり素人が使うと、それはそれは恐ろしい事が起こります。
例えるなら、3歳児にRPGを持たせるようなものです。
私が学生の頃、クラスメートのA君は課題のプログラムで、先生のWindows98を壊しました。
本人に悪意はなく、メモリの処理がバグまみれだったせいです。
本当メモリは地獄だぜフハハハ
メモリに起因するバグは、C言語の宿命です。
叫びながら例を挙げると…
領域破壊!メモリリーク!
キャスト地獄!格上げ爆死!
文字列ファ○○!アライメントぶち込み!
おまけにバイトオーダー戦争!
(※管理人の妄想です)
本書ではこいつら全部はもちろん、多彩なバグを扱ってます。
そして我々人類が、強敵バグに立ち向かう手段は、ただ一つしかありません。
それは、メモリマップを理解すること、です。
切り札はメモリマップ
メモリマップとは、メモリ内部の様子を図解したものです。
メモリマップを見ると「どのアドレスにどんな値が入っているか」がよく分かります。
さて本書は、厄介なバグ共を、こちらが恐縮するくらい丁寧なメモリマップを描いて解説してくれます。
これが、とてもありがたい!
こうやってメモリ内部のイメージが掴めるようになれば、プログラミング中でも
「あ、これだとマズイかも!」
と気付く能力が高まり、バグの発生をガードできます。
カオスを超えてシンプルが近づく
入門書の内容はやったけど、まだC言語がなんか怖いものに見える…
そんな人に、本書はオススメです。
メモリ内の様子が分かれば、混沌が支配していた世界に秩序が見えて来ます。
ウィザードリィで言うと、不確定名「正体不明の存在」にビビらなくなります。
プログラミングは徹頭徹尾に論理的なので、ルールさえ分かれば
意外にシンプルだと思えてきますよ。