fj.comp.lang.c.malloc

このエントリーをはてなブックマークに追加
1仕様書無しさん
malloc & free
ここでとことんやれ。
2仕様書無しさん:01/10/13 11:46
malloc() じゃないけど
fopen() したら fclose() しないとだめ?


if ((fp1 = fopen(filename1, mode)) == NULL)
 exit(1);
if ((fp2 = fopen(filename2, mode)) == NULL) {
 fclose(fp1); /* fp1 のクローズは必要? */
 exit(1);
}
3仕様書無しさん:01/10/13 12:31
ファイルをオープンしたら必ずクローズしなさいよ。
By.COBOLER
4仕様書無しさん:01/10/13 15:11
>>2
exit するならいらんだろ。
5仕様書無しさん:01/10/13 15:39
OSによってはいるんじゃないの?
よくわからんけど。
6仕様書無しさん:01/10/13 15:51
>>5
VC6 ソースを読んでみたけど、こいつは main から抜けた後で __endstdio() @ _FILE.C
関数を呼び出して、バッファに残っているデータを書き出している。だから

fopen();
fwrite();
exit();
// fclose() しない

これでも fwrite() で書き出したデータがバッファに残らずに、きちんとファイルに書き出
される。

標準 C の範囲でどうなってるのかは知らないけど、ANSI C には atexit() 関数がある
以上 main 後に後始末するのが不可能な理由は思いつかんな。もちろん abort() した
ときはダメだが。
7仕様書無しさん:01/10/13 16:01
>>5-6
どうせ結論はその辺からでてくんだろ?
freeしないと、OSによっては通常はOKだがだめなケースがあるとか。
アプリの不出来をOSに押し付ける事がそんなに楽しいか?
8お胸おっぱい:01/10/13 16:35
箱呼んでこい箱!
9仕様書無しさん:01/10/13 16:40
>>7
よく分からんが free() しないアプリケーションは「不出来」で、OS によってはリーク
すると言いたいのか?

その論争はさんざんやって結論出てるから、もういいって。
10仕様書無しさん:01/10/13 16:46
よくわからんのだけど、freeを使わずにプログラムを終了する事がメリットがあるのか?
つーか、こんな馬鹿なプログラムを書いて喜ぶ奴とは気があいそうにないな。
11仕様書無しさん:01/10/13 17:07
>>10
箱じゃないんだから、定期的に話題をループさせるなよ。。。

> よくわからんのだけど、freeを使わずにプログラムを終了する事がメリットがあるのか?

free するにはコスト(実行時コストならびにプログラマが正しく free するコードを書くコスト、
また free できるようなデータ構造を作るコスト)がかかる。free するメリットとコストを秤
にかけて、より良い方を選択すれば良いだけ。

詳しくは前に別スレッドでさんざん議論されてるから、そっち読んでくれ。
12仕様書無しさん:01/10/13 22:05
>>11
そういう不毛な論争をまたするって趣旨のスレじゃないの?
13仕様書無しさん:01/10/13 23:03
for (;;) {
 p = malloc(size); /* 解放していない */
 /* process... */
}

こんなツールがデーモンとしてメールサーバで動いています。
対策としてクーロンで毎日リブートするように仕込んであります。
会社の組織となるとこんなレベルに合わせなくてはならない。
14仕様書無しさん:01/10/13 23:33
cronをどう読めば「クーロン」になるのか…。
15sage:01/10/13 23:41
始まった!malloc and free - fj.comp.lang.c
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=981051921
16仕様書無しさん:01/10/13 23:51
>>14
じゃあなんて読むの???
cron
17仕様書無しさん:01/10/14 00:04
くりおん
18仕様書無しさん:01/10/14 00:16
>>14
マッタリがマターリになるのと同じと見た
19仕様書無しさん:01/10/14 00:35
>>1
なんや、新しいニュースグループできたんか思たで。
20仕様書無しさん:01/10/14 01:09
[cron] (UNIXコマンド) <くーろん> <くろん>
"clock daemon" のこと。名前の由来はよくわからないが、
"Command Run ON"の略か、時を表す接頭辞 "chrono-" から
きているという説がある。
21仕様書無しさん:01/10/14 01:31
>>19 作ったほうが良かろう。
22仕様書無しさん:01/10/14 02:51
クーロンなんて誰が言い出したんだろね。
23仕様書無しさん:01/10/14 03:22
daemon は だえもん だよな?
24仕様書無しさん:01/10/14 06:02
>>13
そりゃあ、ぜったいに解放しなきゃダメなケースだよな。とりあえず Boehm GC
使っとけば?
25仕様書無しさん:01/10/14 08:39
結局のところメモリリークって >>13 のようなデーモンプログラムに
発生するのが一般的だと考えてよろしいですか?
26仕様書無しさん:01/10/14 09:13
>>25
よくないです。

エディタなんかでも、反復的に繰り返される処理で解放を忘れると、メモリを食いつぶ
します。
27仕様書無しさん:01/10/14 12:57
>>13
ウソだぁ。ウソだろ?
こういう論争って、最後に解放するかしないか(OSに解放任せるとか)ってことだろ?
あからさまにメモリ食いつぶすようなループン中で使うわきゃないだろ?
28仕様書無しさん:01/10/14 14:20
>>27
>ループン中
なんかかわいい
29仕様書無しさん:01/10/14 14:55
ループン中age
30仕様書無しさん:01/10/14 18:42
るーぷんソースsage
31仕様書無しさん:01/10/14 18:47
ルーブルン美術館age
32始まった!スレの690:01/10/15 06:49
早くもクソスレの予感(苦笑)
33仕様書無しさん:01/10/15 21:09
>>32
fj 本家の方で箱氏に暴れてもらわないことには、やはり盛り上がりに欠ける
よね(苦笑

そういえば fclose() の件、誰か規格書調べた人いる?
34仕様書無しさん:01/10/15 23:24
東洋海亀ってまだいるのかな?
35始まった!スレの690:01/10/16 05:32
>亀近況
Naoya Kinjo の名義でならたまに投稿してるようです。
旭川のお婆さんだとか30万の投資用の変な箱で
喜んだりとかの往時の暴れっぷりは見られませんが。

きっと utopia.* の僭主気取りで
充足しちゃったんじゃないですか?


>>33
鶴田氏となにやらやりあってるようですが、
誤引用から文脈を読み取れなくなってるレバルじゃ
議論にもなってないし…

Message-ID: <[email protected]>
36ループン:01/10/16 12:31
ループンage
なんか可愛くて(・∀・)イイ!!
37SYN:01/10/16 14:04
最近、fjより2chのがレベルが高い気がしてきたYO
2chなら糞な意見は無視されず、徹底的に叩かれるし。
38仕様書無しさん:01/10/16 15:52
>>37
糞な意見は無視するのが正解。もしその糞な意見が煽りだったら、
そのスレッド全体が荒れてしまう。

2ch にしろ fj にしろ、性質が違うメディアを並べてレベルを語る
君は頭が弱い。

# ↑ は煽り入っている。こういうのは無視しろってこと。
39仕様書無しさん:01/10/16 21:00
煽りくらいでスレが荒れるようなら、元の話題が煽りと遊ぶよりも
つまらなかったってこった。
40仕様書無しさん:01/10/16 21:50
>>37
fj は人が減ったからねぇ。
41 :01/10/19 23:31
正直、だえもんのこと「であもん(deamon)って書いてた。
42仕様書無しさん
>>18
マジでそう呼んでる人に何度もあったことがあります。
母音じゃないところにアクセントを付けるのは変だと思いますが、
変人を看破できるという点では便利かもしれませんね。

>>33
C99 の 7.20.4.3 The exit function より。

Next, all open streams with unwritten buffered data are flushed,
all open streams are closed, and all files created by the tmpfile
function are removed.

規格書はたいした値段じゃないから買いましょう。(C99だけど)
ttp://webstore.ansi.org/ansidocstore/product.asp?sku=ANSI%2FISO%2FIEC+9899%2D1999

愚痴っぽいのでsage。