main以外★mallocの後にfree不要と言うバカいるの?at TECH
main以外★mallocの後にfree不要と言うバカいるの? - 暇つぶし2ch1:デフォルトの名無しさん
12/11/13 22:12:13.29
前提1:一般的なC言語(GC搭載していない)
前提2:main関数は除く
前提3:関数実行後すぐに終了するとは限らない
前提4:関数は何度も使われることがある


これがメモリリークするのは当たり前の話で、
mallocをしたらfreeするのは当たり前。

free不要論とは一体何だったのか。

天邪鬼(バカ)が言葉尻を捉えていただけではないだろうか。
まつもと ゆきひろもそのバカの一人だったらしいね。

例外中の例外を除いて、mallocをしたらfreeは必要。
これが真の答えだろう。

2:デフォルトの名無しさん
12/11/13 22:19:16.94
10年前の俺を見ているようだ

3:デフォルトの名無しさん
12/11/13 22:23:33.65
昔のアプリはサーバーなんてものは考えられておらず
アプリ(CUIしかない)は実行したらすぐに終了していたんだよ。

だからfreeしなくてもいいとかいう間違った考え方が生まれた。

4:デフォルトの名無しさん
12/11/14 07:38:29.10
exitで脱出したい時にもいちいち手間掛けてfreeすんのか、って話だとか聞いたけど。それなら
確かにfree要らんわな。
freeしても大抵マークするだけだしプロセス終了時に開放されるからfree不要、って話の方には、
基本的に賛同しないけどな。してもしなくても変わらないケースも多いが、変わるケースも少なく
ないし、freeを省略する利点も無い。実行形式をとことん小さくしたい時くらいかね。

5:デフォルトの名無しさん
12/11/14 10:17:51.41
>>1
つか、その前提条件はmalloc-free論争のときのと違うし。

6:デフォルトの名無しさん
12/11/14 12:14:18.68
>>3
基本的に終了しないアプリなんて、それこそC言語が生まれる前からあるだろ

7:デフォルトの名無しさん
12/11/14 14:35:53.85
free地獄
a = malloc(10);
if (error) {
free(a);
return;
}
b = malloc(10);
if (error) {
free(a);
free(b);
return;
}
c = malloc(10);
if (error) {
free(a);
free(b);
free(c);
return;
}

process();

free(a);
free(b);
free(c);

return;


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch