[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:95116] Re: memory leak


塩崎です。


From: Fumikatu_Saitoh _at_ hq.digi.co.jp
Subject: [linux-users:95114] memory leak
Date: Thu, 5 Sep 2002 13:39:30 +0900
Message-ID: <OF5BD3C1FB.FC818AC4-ON49256C2B.0017E474 _at_ LocalDomain>

>   早速なのですが、
>   memory leakで分からない事があるので、どなたか御教授頂けたら幸いです。

このネタは一年続くのでタブーです(冗談)

# 実際、fj.comp.lang.c で一年以上続いたネタだけど。


> これは、メモリリークではないのでしょうか?
> 実際にlocaltime()関数も追ってみたのですが、どうも一度呼ばれたlocaltime()の
> ある部分をメモリーに残して2度目からlocaltime()が呼ばれるとそのメモリーも利
> 用するとなっているようです。
> ただそうなると、プロセスが終了するときにそのメモリーを開放するような関数が
> なくてはいけないような気がします。(間違っているかも知れませんが)

もし、localtime を呼ぶたびに孤児になるメモリが増加してゆくようならば、
それは明確なメモリリークなのですが、こういうふうに意図的に開放せずに
放置している場合は、普通メモリリークとは呼びません。

もちろんこれには「プロセスの終了時にカーネルが自動でメモリを
回収してくれる」という前提条件が必要なんですが、glibc が想定している
カーネルはそれを満たしているものしかないので、意図的に
放置しているんですな。

こういうメモリを律義に明示的に free するべきかどうか、
というのは意見の分かれるところでして、少なくとも glibc は、
これを放置するというポリシをとっているわけですね。
# この手のメモリを free するのは、普通の人が安易に考えるよりは難しい。

いずれにしろ、「メモリ枯渇の原因になるのではないか?」という意味での
メモリリークの心配をする必要はないでしょう。


では。
--
Takuya SHIOZAKI / ASTEC Products, Inc.

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
References: