[解決済み】なぜC++にはガベージコレクタがないのですか?
質問
この質問は、まずガベージコレクションの是非を問うものではありません。 Bjarne Stroustrupが、C++はいつかはガベージコレクタを持つことになるだろうと発言していることを知っているからです。
そうはいっても、なぜ追加されないのでしょうか? C++用のガベージコレクタはすでにいくつかあります。 これは単に「言うは易く行うは難し」なのでしょうか? あるいは、追加されない(C++11でも追加されない)他の理由があるのでしょうか?
クロスリンクです。
念のためですが、C++が最初に作られたときにガベージコレクタがなかった理由は理解しています。 なぜコレクタを追加できないのかが不思議です。
解決方法は?
暗黙のガベージコレクションを追加することは可能でしたが、カットされるには至りませんでした。 おそらく、実装の複雑さだけでなく、人々の一般的なコンセンサスが十分に早く得られなかったことが原因でしょう。
Bjarne Stroustrup自身の言葉です。
<ブロッククオートガベージコレクタは オプションで有効化できる C++0xに含まれるはずだったのですが。 技術的な問題が多いので 詳細な そのようなコレクターがどのように 他の部分と統合する もし提供されるのであれば、その言語を使ってください。このように 基本的にすべてのC++0xの機能で 実験的な実装が存在します。
このトピックに関する良い議論があります こちら .
全体概要です。
C++は非常に強力で、ほとんど何でもできるようになります。 そのため、性能に影響を与えるようなことは、あまり自動的には行われません。 ガベージコレクションは、スマートポインタ(ポインタを参照カウントでラップし、参照カウントが0になると自動的に自身を削除するオブジェクト)を使って簡単に実装することができます。
C++は、ガベージコレクションを持たない競合他社を意識して作られました。 C++がCなどと比較して批判をかわさなければならなかったのは、効率の良さだったのです。
ガベージコレクションには2種類あって......。
明示的なガベージコレクション。
C++0xではshared_ptrで作成されたポインタでガベージコレクションが行われる
欲しい人は使えばいいし、欲しくない人は無理に使わなくてもいいんです。
C++0x以前のバージョンでは、boost:shared_ptrが存在し、同じ役割を果たします。
暗黙のガベージコレクション。
ただし、透過的なガベージコレクションは備えていません。 しかし、これは将来のC++仕様の焦点になるでしょう。
なぜTr1には暗黙のガベージコレクションがないのですか?
C++0xのtr1には本来備わっているべきものがたくさんありますが、Bjarne Stroustrupは以前のインタビューで、tr1は彼が望むほどには備わっていなかったと述べています。
関連
-
[解決済み】coutはstdのメンバではない
-
[解決済み】Cygwin Make bash コマンドが見つかりません。
-
[解決済み】#include<iostream>は存在するのですが、「識別子 "cout "は未定義です」というエラーが出ます。なぜですか?
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] なぜテンプレートはヘッダーファイルでしか実装できないのですか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] System.gc()を呼び出すのはなぜ悪い習慣なのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み】'cout'は型名ではない
-
[解決済み】C++エラー:の初期化に一致するコンストラクタがありません。
-
[解決済み】リンカーエラーです。"リンカ入力ファイルはリンクが行われていないため未使用"、そのファイル内の関数への未定義参照
-
[解決済み】ファイルから整数を読み込んで配列に格納する C++ 【クローズド
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み】変数やフィールドがvoid宣言されている
-
[解決済み】「span」とは何ですか、どんな時に使うのですか?