C++11とガベージコレクション間の類似点
C++11とガベージコレクションは(ユニオンペディアに)共通で8ものを持っています: 弱い参照、ポインタ (プログラミング)、ライブラリ、スレッド (コンピュータ)、動的メモリ確保、C++、C言語、Java。
弱い参照
弱い参照(weak reference、ウィークリファレンス)とは、参照先のオブジェクトをガベージコレクタから守ることのできない参照のことである。弱い参照からのみによって参照されるオブジェクトは到達不可能とみなされ、従っていつでも解放することができる。弱い参照は、不要となったオブジェクトが循環参照によって解放されないという問題を防ぐために用いられる。PythonやJavaをはじめとしたガベージコレクタを実装したオブジェクト指向言語の多くは、弱い参照を実装している。 ガベージコレクタ (GC) はメモリリークを防ぐために用いられる。GCの種類には、主にマーク・アンド・スイープ型と参照カウンタ型の2種類がある。このうち参照カウンタ型は、オブジェクトごとに参照の数を記録したレコードを用意し、その数が0になった時点でオブジェクトを解放するというものである。このタイプのGCは、あるオブジェクト間で参照が循環した場合にそれらを解放することができない。そのため、相互に参照しあったオブジェクト群はメモリリークの原因となる。この問題は、強い参照を弱い参照で置き換えることで循環が断たれるのであれば、弱い参照によって解決することが可能である。 プログラムは、あるオブジェクトに弱い参照のみを用いて参照することで、そのオブジェクトがさほど重要ではないということを示すことができる。そのため弱い参照は、必ずしも必要ではないオブジェクトがメモリ中に存在する数を最小にするためにも用いることができる。 弱い参照の強度を複数もつ言語もある。例えば、Javaには弱い参照、ファントム参照、ソフト参照がある(java.lang.ref パッケージに定義されている)。C++のように、元々ガベージコレクタのない言語で、その代替機能をライブラリでサポートし、その中で弱い参照・強い参照の機能を提供しているものもある。C++のスマートポインタ (Boost, TR1, C++11) の場合ではshared_ptrが「強い参照」でweak_ptrが「弱い参照」である。通常のポインタは参照の数に影響しないと言う意味で「弱い参照」と考えることもできるが、弱い参照はオブジェクトが到達不可能になったことを知っているべきなので、ポインタは本当の意味での弱い参照ではない。 弱い参照が便利なひとつの例として、アプリケーション内で参照されている変数を追跡するケースがある。この追跡リストは、対象オブジェクトに対して弱い参照で参照しなければならない。そうしなければ、一度リストに加えられたオブジェクトはリストによって参照されるため、プログラムが停止するまで半永久的に解放されることはない。 Category:プログラミング言語の構文 Category:メモリ管理.
C++11と弱い参照 · ガベージコレクションと弱い参照 ·
ポインタ (プログラミング)
ポインタ (pointer) とは、あるオブジェクトがなんらかの論理的位置情報でアクセスできるとき、それを参照する(指し示す)ものである。有名な例としては Pascal のポインタが挙げられる。 なお、C++では、さらに独立した「参照」という機能がある。.
C++11とポインタ (プログラミング) · ガベージコレクションとポインタ (プログラミング) ·
ライブラリ
ライブラリ()は、汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたものである。ライブラリと呼ぶ時は、それ単体ではプログラムとして作動させることはできない実行ファイルではない場合がある。ライブラリは他のプログラムに何らかの機能を提供するコードの集まりと言うことができる。ソースコードの場合と、オブジェクトコード、あるいは専用の形式を用いる場合とがある。たとえば、UNIXのライブラリはオブジェクトコードをarと呼ばれるアーカイバでひとまとめにして利用する。図書館()と同様にプログラム(算譜)の書庫であるので、索引方法が重要である。 また、ソフトウェア以外の再利用可能なものの集合について使われることもある。.
C++11とライブラリ · ガベージコレクションとライブラリ ·
スレッド (コンピュータ)
レッド(thread)とは、CPU利用の単位。プロセスに比べて、プログラムを実行するときのコンテキスト情報が最小で済むので切り替えが速くなる。スレッドは、thread of execution(実行の脈絡)という言葉を省略したものである。 プログラミングの観点からみると、アプリケーションの処理の「実行の脈絡」は1つでないことが多い。これをシングルスレッドで実現しようとするとシグナルやタイマーを駆使してコーディングすることになる。また、複数のプロセスに分割してプロセス間通信で協調動作させるという方法もある。しかし、いずれの場合もそれらの機能を使うための余分な、本来のアルゴリズムと関係ないコーディングが必要となる。スレッドを使用したプログラミングは本来のアルゴリズムに集中しやすくなり、プログラムの構造が改善されるという効果がある。.
C++11とスレッド (コンピュータ) · ガベージコレクションとスレッド (コンピュータ) ·
動的メモリ確保
動的メモリ確保 (動的メモリアロケーション・動的メモリ割り当て・dynamic memory allocation) とは、メモリ管理のひとつである、プログラムを実行しながら、並行して必要なメモリ領域の確保と解放を行う仕組みである。 メモリの利用状況は、自身の実行状況や他のプログラムの実行状況に応じて常に変動するため、それらの動作に支障を来さぬよう必要なメモリ領域を適切なアドレスに対して臨機応変に確保・解放を行う必要がある。.
C++11と動的メモリ確保 · ガベージコレクションと動的メモリ確保 ·
C++
C++(シープラスプラス)は、汎用プログラミング言語の一つである。日本語では略してシープラプラ、シープラなどとも呼ばれる。.
C言語
C言語(シーげんご)は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発したプログラミング言語である。英語圏では単に C と呼んでおり、日本でも文書や文脈によっては同様に C と呼ぶことがある。.
Java
Java(ジャバ)は、狭義ではプログラミング言語Javaを指す。広義では言語仕様以外にも、仕様が与えられているJavaクラスライブラリやJava仮想マシン、さらにはJDKやJREなどの公式のものをはじめとする、場合によってはサードパーティのものなどを含め曖昧にJavaプラットフォームと総称されるようなものなどのエコシステムなどを指すこともある。構文についてはJavaの文法の記事を参照。.
上記のリストは以下の質問に答えます
- 何C++11とガベージコレクションことは共通しています
- 何がC++11とガベージコレクション間の類似点があります
C++11とガベージコレクションの間の比較
ガベージコレクションが45を有しているC++11は、78の関係を有しています。 彼らは一般的な8で持っているように、ジャカード指数は6.50%です = 8 / (78 + 45)。
参考文献
この記事では、C++11とガベージコレクションとの関係を示しています。情報が抽出された各記事にアクセスするには、次のURLをご覧ください: