プログラミング

吉田誠一のホームページ   >   ソフトウェア工学   >   技術コラム

CやC++、Javaなどのプログラミング言語や、プログラミング技法、コーディングのテクニックについて紹介します。

メモリリークしない安全なプログラムの書き方

補遺: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言語のよくある間違い に数多くの例が紹介されています。ここでは、これらのページに見当たらなかった間違いの例を紹介します。 ................

Copyright(C) Seiichi Yoshida ( comet@aerith.net ). All rights reserved.