内容へ移動
C++プログラマのためのC++/CLI入門
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
現在位置:
TOP
»
cli
»
ハンドル_gcnew
cli:ハンドル_gcnew
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
{{indexmenu_n>4}} ====== ハンドル、gcnew ====== C++/CLIでガーベッジコレクション(GC)の機能が加わりましたが、この機能が働くのはマネージヒープに対してのみです。マネージヒープに対しては、いままでのポインタや参照の概念は使わずに、新しくハンドルという概念を使います。 マネージヒープはGCにより、プログラマが意図しないところで、いらなくなったメモリの開放やメモリの並び替えが行われます。このためアドレス値をじかにもつポインタや参照のようなものでは駄目なのです。 マネージヒープ上に作成するクラスは新しいキーワード"ref class"を使って定義しなければなりません。 また、いままでのclassで定義されたクラスははマネージヒープ上に作成することはできません。 マネージヒープ上にインスタンスを作成するには、キーワード"gcnew"を使います。これらののインスタンスは、GCによりメモリから開放される際に、ファイナライザーが呼ばれます。 マネージヒープ上に作成されたインスタンスのメモリ開放はもはやGCの仕事ですが、"delete"を呼び出すことはできます。これはデストラクタをコールします。デストラクタが呼ばれると、ファイナライザーは呼ばれなくなります。また、"delete"を呼ばずにおくと、デストラクタは呼び出されず、ファイナライザしか呼ばれません。 ファイナライザの構文はクラスCに対して、!C()です。 ファイナライザーはいつ、どのスレッドによって呼び出されるかわかりません。
/var/www/html/virtual/cppcli/data/pages/cli/ハンドル_gcnew.txt
· 最終更新: 2013/12/23 09:08 (外部編集)
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ