アカウント名:
パスワード:
C++信者です。
中途半端に親切な言語だと、その親切に頼ったコーディングになってしまうような気がします。
たとえば、GCのおかげでメモリリークを気にしなくて良くなったせいで、後始末を省略する癖が付いてしまったとします。すると、ファイルを閉じ忘れて放置するとか、DBを切断し忘れて放置するとか、メモリ以外のリークに配慮が行き届かない、コーディングスタイルが身についてしまわないか心配です。
そこでC++の出番です。デストラクタのおかげで、オブジェクトがスコープから外れると、必ずシステムリソースをクローズした上で解放される、といった仕組みを作り
んー、ちょっと苦になるかな。解放し忘れるリスクは否定できないので、やっぱり、スコープから抜けたら確実に解放できる仕組みが欲しいですね。C++なら作業用メモリは、std::vector tmp(n);とかで確保すればいいし。
スタックに積めばいいだけでは? スコープから抜けたら確実に解放されるよ。
char buf[1024*1024*100];とか平気でやって、スタックオーバーフローをバグだバグだと大騒ぎする人を教育せにゃあ。
その問題はldの--stackオプションでスタックをたっぷり取れば解決する。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
身近な人の偉大さは半減する -- あるアレゲ人
C関係で思ったこと (スコア:0)
なぜなら、GCがあったとしてもそれに頼るようなコーディングはしないし、
ヘタレなコーディングすればメモリリークはGCがあっても発生するから
実際にCのコーデングをしてみれば体感できると思うけれど
解放すること自体は、苦になりません。
逆に、確保とサイズ変更が大変。
この点はLLとかGCのある言語と比較してCの短所になると思うし、GCの恩恵じゃないかと思う。
※メモリ確保したときは基本同じスコープないで解放もするので
複雑なメモリ管理が必要になるケースはあまりないです。
あと、C#はJavaじゃなくてPASCALをC/C++の文法に似せる形にしていたと思った。
Microsoftのサイトに書いてあったはずなのだけど探してみたけど見つからなかった。
気のせいかな~?
Re: (スコア:2, 興味深い)
C++信者です。
中途半端に親切な言語だと、その親切に頼ったコーディングになってしまうような気がします。
たとえば、GCのおかげでメモリリークを気にしなくて良くなったせいで、後始末を省略する癖が付いてしまったとします。
すると、ファイルを閉じ忘れて放置するとか、DBを切断し忘れて放置するとか、メモリ以外のリークに配慮が行き届かない、コーディングスタイルが身についてしまわないか心配です。
そこでC++の出番です。デストラクタのおかげで、オブジェクトがスコープから外れると、必ずシステムリソースをクローズした上で解放される、といった仕組みを作り
Re: (スコア:0)
スタックに積めばいいだけでは? スコープから抜けたら確実に解放されるよ。
Re:C関係で思ったこと (スコア:0)
char buf[1024*1024*100];
とか平気でやって、スタックオーバーフローをバグだバグだと大騒ぎする人を教育せにゃあ。
Re: (スコア:0)
その問題はldの--stackオプションでスタックをたっぷり取れば解決する。