メモリリークしない安全なプログラムの書き方
補遺:2006年7月2日
プログラマーは、メモリリークを起こさないように、メモリの確保と解放には細心の注意を払います。しかし、プログラムを書く時は、さまざまなエラーが起こる場合にも備えておかなくてはなりません。
どんなエラーが起きたとしても、きちんとメモリが解放されるプログラムを書くのは、かなり大変です。思いがけないところで関数を抜けてしまい、メモリを解放し損ねることがあります。
ここでは、いつ、どこでエラーが起きても、メモリリークが発生しない、安全なプログラムの書き方を紹介します。 ................
Javaのスレッドとメモリリーク
補遺:2005年6月11日
Javaにはgarbage collectorが組み込まれていますので、CやC++の場合と違って、自分でメモリを解放する必要はありません。使われなくなったオブジェクトは、そのうち自動的に削除されます。
ところが、プログラマが意識していないところで、オブジェクトが参照されたままとなってしまい、いつまでたってもgarbage collectorでメモリが解放されない、という状況になることがあります。これが、Javaのメモリリークです。 ................
COM/DCOMのマーシャリングに伴う実行時エラー
改訂:2006年5月17日
IDLのインターフェース定義で使えるデータ型は、C言語/C++言語のデータ型ととても良く似ています。実際、Visual C++ (VC++) を使ってソフトウェアを作る場合は、COM/DCOMの関数呼び出しは、ふつうの関数呼び出しとの違いは、ほとんど意識することがありません。
しかし、COM/DCOMのデータ型と、C言語/C++言語のデータ型とは、厳密には異なっています。注意しないと、コンパイルには成功しても、実行時に予期しないエラーが発生することになります。 ................
Visual C++で開発中にリソースが消えてしまう問題
作成:2005年12月4日
Visual C++ (VC++) を使ったWindowsソフトウェアの開発では、ダイアログ画面やアイコン、文字列などは、リソースとして作成します。
リソースは、.rcという拡張子を持つリソースファイルと、resource.hというヘッダファイルに保存されます。しかし、これらのファイルを入れ換えたり、メモ帳で修正したりすると、せっかく作ったリソースが消えてしまうといった問題が発生することがあります。
ここでは、リソースが消えてしまう具体的な事例を紹介します。また、問題が起こる原因と、リソースを消さないための対策を示します。 ................
Visual C++ 5.0 のバグ
作成:2005年12月3日
Visual C++ (VC++) 5.0 にはいくつかのバグがあり、正しいソースコードを書いても、正しく実行できないソフトウェアができることがあります。 ................
ありがちなC言語プログラムの間違い
改訂:2005年12月13日
ここでは、C言語によるプログラミングでありがちな間違いを紹介します。
C言語によるプログラミングで犯しやすい間違いは、 C言語 FAQ 日本語訳 や C言語のよくある間違い に数多くの例が紹介されています。ここでは、これらのページに見当たらなかった間違いの例を紹介します。 ................