アカウント名:
パスワード:
解放したら、そのポインタにNULLを入れてif (foo){ free(foo); foo = NULL;}
free(NULL);は何もしないことになってるので、if(foo)は無くてもよかったはず。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
目玉の数さえ十分あれば、どんなバグも深刻ではない -- Eric Raymond
二重解放 (スコア:1)
最近は安全な文字列操作関数ライブラリ使ったり、コンパイル時に書式文字列と引数の不整合を指摘してくれるコンパイラ使うとか手段があるので、タレコミ後半の通りCそのものの問題ということでもないだろうけど。
CVEの脆弱性リスト眺めてると、二重解放の脆弱性が頻度も多い割りに中々気づけない気がする。何か良い対処方法はありますか?
Re: (スコア:0)
解放したら、そのポインタにNULLを入れて
if (foo){
free(foo);
foo = NULL;
}
Re: (スコア:1)
free(NULL);は何もしないことになってるので、if(foo)は無くてもよかったはず。
1を聞いて0を知れ!
Re: (スコア:1, 興味深い)
言語仕様しか知らない頭でっかちの屁理屈だって言われて。
たぶん昔、free(NULL)するとオカシナことになる処理系があったのでしょう。
Re:二重解放 (スコア:0)
処理系依存とか言うのなら、その処理系が仕様からはずれてるってことじゃないのか?
(組込だとありなのかしら?)