終了直前以外でfree不要と言うバカいるの?2人目
1 :
デフォルトの名無しさん:
前スレ
http://toro.2ch.net/test/read.cgi/tech/1352812333 これまでのまとめ
free必須バカの主張
・将来、別の使い方されるかもしれないからfreeすべし。
・メモリチェックツールの検査結果がクリーンでないと検査が通らないから、
必死で書く。
free必須バカの言動
・線形リストの解放処理を簡潔に書いてみろというお題に挑戦し、ことごとく討死。
・末尾再帰を知らずに、末尾再帰で書かれた解放処理に対し「それ何個まで解放可能か?」と
いうクイズを出す。
それは末尾再帰だとネタバレされた後は自演という事にして精神の安定を保つ。
・ダブルポインタという用語を好んで使う。ポインタへのポインタの事らしい。この用語を使っ
ているC言語解説書籍は一冊だけあるらしい。インド人が書いた書籍で詳細不明。
・自分が使いこなせない言語は欠陥言語と認定する。
2 :
デフォルトの名無しさん:2013/01/31(木) 07:49:41.01
爆笑ログ
free必須バカが末尾再帰を知らずに「それ何個まで解放可能?」というクイズを出す。
http://toro.2ch.net/test/read.cgi/tech/1352812333/876 > From: [874] デフォルトの名無しさん <>
> Date: 2013/01/29(火) 12:37:44.50
>
> バカがうるさいので書き直してやるよ。www
> void free_l(struct l * restrict p) {
> struct l *next = p->next;
> free(p);
> if (next)
> free_l(next);
> }
>
> バカのいいがかりなんて所詮この程度の事。 バカには意味わからないだろうけどな。www
> From: [876] デフォルトの名無しさん <sage>
> Date: 2013/01/29(火) 12:58:33.48
>
> ここでwwwさんに問題です
> 天才には簡単な問題ですので必ず逃げないで答えてください
>
> スタックサイズが8MBのとき、このfree_l関数で解放可能な連結リストは
> 最大何個連結可能でしょうか?
>
> アーキテクチャは好きに選んでいいですよ
1乙
「main 以外」なんだからねっ!
不毛な議論しちゃダメ、絶対。
ところで、exit 適用時も議論対象外になった事に、お気付きですか?
「main以外」抜いたここは別スレだろ
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
6 :
デフォルトの名無しさん:2013/01/31(木) 21:32:21.52
2か
くさお必死メーター上がりまくりage
fjって、いまでもよめますか?
8 :
デフォルトの名無しさん:2013/01/31(木) 22:57:40.45
>>8 やあ、前スレ
>>876のおバカさん。www
こっちのスレも前スレのように盛り上げてくれ。wwww
ネタ投下
free必須バカに質問
> ・メモリチェックツールの検査結果がクリーンでないと検査が通らないから、
> 必死で書く。
テスト網羅率が100%じゃないとメモリチェックツールの検査結果がクリーンという事に
何の意味もないと思うんだが、テスト網羅率が100%ってどうやって達成するんだい? www
9 :
デフォルトの名無しさん:2013/01/31(木) 23:00:17.05
うわ、前スレでアンカー間違えたバカからかったのに自分でやっちまった。 www
正常系と異常系の区別がつかないのは健在だな
void召還プログラム
12 :
デフォルトの名無しさん:2013/02/01(金) 00:56:44.98
ぷぷぷっ、正常系に限ってもテスト網羅率100%に出来るの? wwwww
そんなスーパーエンジニアがこんな場末のクソスレになんの用? wwwww
んじゃ、free必須バカにもう一つ問題。wwww
これはメモリリーク? www
それとも異常系で例外? wwwww
void on_exit(void)
{
extern char **environ;
char prog[32];
char *argv[2] = { "-exit", NULL };
sprintf(prog, "/proc/%d/exe", getpid());
execve(prog, argv, environ);
}
int main(int argc, char **argv)
{
char *p;
if (argc > 0 && strcmp(argv[0], "-exit"))
return 0;
atexit(on_exit);
p = malloc(1000);
return 0;
}
>>12 > if (argc > 0 && strcmp(argv[0], "-exit"))
> return 0;
意味が分からない。
argcが0かマイナスになることがあるんだっけ?
strcmpは同じ場合に0を返すんだよね?
argv[0]はコマンド名になので"-exit"との比較に何の意味が?
このプログラムの実行ファイルとかシンボリックリンクが
-exitだったら延々execveするのか?
正常系だとするとちょっとしたマルウェア?
いや、違うか。
execveで、"/proc/%d/exe"になるから次で終わるんだな
15 :
デフォルトの名無しさん:2013/02/01(金) 07:26:52.79
む、バグだ。wwwww
void on_exit(void)
{
extern char **environ;
char prog[32];
char *argv[2] = { "-exit", NULL };
sprintf(prog, "/proc/%d/exe", getpid());
execve(prog, argv, environ);
}
int main(int argc, char **argv)
{
char *p;
if (argc > 0 && strcmp(argv[0], "-exit") == 0)
return 0;
atexit(on_exit);
p = malloc(1000);
return 0;
}
16 :
デフォルトの名無しさん:2013/02/01(金) 09:12:45.43
やっぱり議論の視点が違うな。
対応するfreeを書けってのはつまり、「これはリークするかしないか?」
なんてクイズみたいなコードを書くのは避けろってことだ。
17 :
デフォルトの名無しさん:2013/02/01(金) 14:08:48.68
書くべき理由が薄弱だから、freeを書くべき基準もあいまいで、
「それは異常系だから書かなくていい」とか言い出す始末。
だから、クイズ。
18 :
13,14:2013/02/01(金) 14:43:58.47
クイズというか、いよいよマルウェアになったね
ただのバカなのか悪意があるのか知らないけど
こんな人間とまともに議論しようとする方が無茶だった
19 :
デフォルトの名無しさん:2013/02/01(金) 16:51:32.93
マルウエアの定義知ってる? 異常系が使えなくなったらこんどはマルウエア。wwww
出た定義厨
「まるうえあ」は余りに間抜けだと思うの。
おまえがな
ハードウエア、ソフトウエア…極めつけは「ソストウエア」w
>>21,23
草男はいくら偉そうなことを言ってても
こういうところで素性がバレてしまうんだよな
で、恥ずかしくなってここからは逃走
25 :
デフォルトの名無しさん:2013/02/04(月) 08:31:57.73
free必須バカは全部踏みつぶしてきた。全部敗走したぞ。 wwww
のこってるのは煽る事しか能がないお前だけだ。 バカ以下のゴミ虫 www
http://toro.2ch.net/test/read.cgi/tech/1359549517/121 > From: [121] デフォルトの名無しさん <sage>
> Date: 2013/02/03(日) 18:15:54.29
>
> execveで呼ばれたときにargv[0]は"/proc/???/exe"みたいなのなるだろ、つってんだよ
> From: [132] デフォルトの名無しさん <sage>
> Date: 2013/02/03(日) 18:48:17.85
>
> execveでargv[0]を引数にして動作を振り分けるなんというキチガイな
> 実装を、有名なOSSの実装で1つでも出せるなら認めてやろう。
自分がゴミということに気付かないゴミ↑
27 :
デフォルトの名無しさん:2013/02/04(月) 12:06:32.22
↑ そりゃ悔しいだろうな。 でもお前のバカ脳が招いた結果。 wwww
http://toro.2ch.net/test/read.cgi/tech/1359549517/121 > From: [121] デフォルトの名無しさん <sage>
> Date: 2013/02/03(日) 18:15:54.29
>
> execveで呼ばれたときにargv[0]は"/proc/???/exe"みたいなのなるだろ、つってんだよ
> From: [132] デフォルトの名無しさん <sage>
> Date: 2013/02/03(日) 18:48:17.85
>
> execveでargv[0]を引数にして動作を振り分けるなんというキチガイな
> 実装を、有名なOSSの実装で1つでも出せるなら認めてやろう。
くさおって一日中ネットしてるみたいだけど
職とかないの?
確かにビジネス会話とかはできなさそうだけど
29 :
デフォルトの名無しさん:2013/02/04(月) 22:55:25.83
↑ 悔しそうだな。 でもお前のバカ脳が招いた結果。 wwww
http://toro.2ch.net/test/read.cgi/tech/1359549517/121 > From: [121] デフォルトの名無しさん <sage>
> Date: 2013/02/03(日) 18:15:54.29
>
> execveで呼ばれたときにargv[0]は"/proc/???/exe"みたいなのなるだろ、つってんだよ
> From: [132] デフォルトの名無しさん <sage>
> Date: 2013/02/03(日) 18:48:17.85
>
> execveでargv[0]を引数にして動作を振り分けるなんというキチガイな
> 実装を、有名なOSSの実装で1つでも出せるなら認めてやろう。
完全に壊れたレコードだな
統失の特徴だから仕方ない
32 :
デフォルトの名無しさん:2013/02/05(火) 20:03:04.75
↑ 自分の醜態を貼られるのはいやか? バカ wwww
http://toro.2ch.net/test/read.cgi/tech/1359549517/121 > From: [121] デフォルトの名無しさん <sage>
> Date: 2013/02/03(日) 18:15:54.29
>
> execveで呼ばれたときにargv[0]は"/proc/???/exe"みたいなのなるだろ、つってんだよ
> From: [132] デフォルトの名無しさん <sage>
> Date: 2013/02/03(日) 18:48:17.85
>
> execveでargv[0]を引数にして動作を振り分けるなんというキチガイな
> 実装を、有名なOSSの実装で1つでも出せるなら認めてやろう。
33 :
デフォルトの名無しさん:2013/02/09(土) 22:14:28.04
>>1 ま、メモリはOSから借りるものだからね
free(返済)なんて必要ないよな
現実の借金だって、踏み倒し続けて死ねばすべてチャラだし
最近ちょっと話題になっている OOM Killer を忘れてやしませんか?
35 :
デフォルトの名無しさん:2013/02/10(日) 10:47:18.72
free必須バカはOOM Killerで殺される時も必死でfreeするのか。大変だな。www
37 :
デフォルトの名無しさん:2013/02/10(日) 11:41:23.70
スラドで沈みかけてるトピをドヤ顔ではられても。
v8のjavascriptのGabageCollectionは
実際にメモリが足りなくなるまでは発動されないよ
process.exit(0);で終了するとGCされないまま終了するwww
39 :
デフォルトの名無しさん:2013/02/10(日) 19:27:24.21
そもそもガベコレが頻繁に行われたからと言って、
メモリの断片化が解消されるとは限らないからな。
どうせあとで確保出来なくなるなら何もしてないのと一緒。
free するだけ時間の無駄。
よっぽどfreeにトラウマがあるんだろうな
底辺PGは無用なfreeを山ほど書いて成果を水増しする。
free(0) をたくさん書けば成果水増しできる環境とは、羨ましすぎる (w
free必須バカの「どんな環境にもっていかれるかわからないからfreeする」
という教義によりfree(0)は許されていない。
あせってんねfree不要派
free(0)って型エラー引っかからんの?
free((void *)0)とかせんでいいの?
手元にgcc動く機械ないし、規格書読むのめんどいんで
だれか教えて(実際の実装と規格の面から)
46 :
デフォルトの名無しさん:2013/02/11(月) 13:50:58.14
ポインタが必要な場所での0はNULLとして扱われる 規格に書いてある
可変長引数でNULLの代わりに0を使うことは出来ない GNU関係では注意としてマニュアルに載っている
多くの環境でNULLは((void*)0)と定義されている stddef.hでもよめ
>>44 具体的に「freeを書いたら○○の弊害がある」とかの主張ならともかく、
書かなくても良い場面を血眼で探して「省略した俺カッケー」だもんな。
そりゃすぐ破綻するわw
>>46 単に0になってる環境もあるし、それは規格の上でも正しい。
可変長引数関数は引数型を指定できないので、0と書くとintと解釈される。
これはsizeof(int) != sizeof(void*)な環境では問題になる。
そうそう、だから C-FAQ にも (void *)0 とかキャストしろ、って書かれてるんだよね。
キャストなんてそれ以外には早々使う場面はない。
>>50 お前のへなちょこ二分木ライブラリpush()/pop()を使うとキャストまみれになるんだが?
>>51 君が自他共に認めるへなちょこだってことは、よくわかったw
>>52 荒らしに餌をやるな
君よばわりされたことで舞い上がったらどうする?
なんだこのスレ
まだやってたのかこの論争
いいぞもっとやれ
実行中free必要、終了時free必要←普通の意見
実行中free必要、終了時free不要←横着だがOS/ランタイムによっては真な意見、または、変人を名乗る闇プログラマの意見
実行中free不要、終了時free必要←アルゴリズム考える力がないバカ、または、自前でメモリ管理する変人の意見、または、変人を名乗る闇プログラマの意見
実行中free不要、終了時free不要←横着な馬鹿の意見、または、OS/ランタイムに依存した横着な変人の意見、または、変人を名乗る闇プログラマの意見
バカと闇プログラマ(すーぱーはかー)は似て非なる存在だから喧嘩売った前スレ
>>1は乙としか言いようが無い
>>2 末尾再帰のループ変換は機械的に適応可能な最適化だけど、必ず適応される保証なんて無かったような
gcc(c99+O2/c99/O2/none)とcl(VS2010@restrict無効)とtccで念のためやってみたけど、
Winは普通にクラッシュするしBSDもarg_ptr見る分にはきっちり再帰が積み上がってる
「使っても問題ない書き方」とは間違っても言えない・・・
57 :
デフォルトの名無しさん:2013/04/06(土) 17:03:48.60
OS/ランタイムに依存とか言い出すとfreeしても問題が無くなる訳ではないなどと
>>55 MISRAの教義ではmallocするなだな
末尾再帰が最適化されるとは限らない