[迷信] free でメモリを開放する

今回は、技術的な話題というより、むしろ国語に関する話題です。タイトルに示したように、最近は「メモリを開放」という表現を、ネット上だけでなく書籍でも非常に多く見かけます。しかし、malloc で割り付けたメモリブロックに対して free を用いて行うのは「メモリの解放」であり、「メモリの開放」ではありません。

言葉の意味をよく考えてみていただきたいのですが、「解放」というのは「解き放つ」の意味で、free や release の訳語として用いられるのはこちらです。一方、「開放」というのは「開け放つ」の意味で、open the door を「ドアを開放する」すると訳すように、「出入りを自由にする」場合に使います。

ちなみに、「解放する」の訳語があてられるのは free や release 以外にもあって、liberate は「女性解放」や「民族解放」の場合に使います。また、emancipate は「奴隷解放」の場合に使います。

では、「メモリを開放する」という表現が常に間違いかというとそんなことはありません。例えば、メモリを他のプロセスや他のハードウェアなどから自由にアクセスできるようにする場合には、「メモリを開放する」と表現すべきです。ちょうど、「門戸開放」とか「校庭開放」などと同じイメージです。

ところで、Googleで「メモリ 解放」を検索すると、「もしかして:メモリ 開放」が出てきます。とんだミスリードです。

最後に、JIS X3010:2003の「7.20.3.2 free関数」から引用します。

機能 free関数は,ptrが指す領域を解放し,その後の割付けに使用できるようにする。

この記事のトラックバックURL:

http://www.kijineko.co.jp/trackback/490