ロゴ
ユニオンペディア
コミュニケーション
Google Play で手に入れよう
新しい! あなたのAndroid™デバイスでユニオンペディアをダウンロードしてください!
インストール
ブラウザよりも高速アクセス!
 

RAII

索引 RAII

RAII(Resource Acquisition Is Initialization、日本語では「リソースの確保は初期化時に」、「リソースの取得と初期化」など)は、資源(リソース)の確保と解放を、クラス型の変数の初期化と破棄処理に結び付けるというプログラミングのテクニックで、特にC++とD言語で一般的である。 RAIIでは、資源の取得をクラス型変数の構築(初期化)時、返却を破壊時に行う。自動変数がスコープを離れるときデストラクタが呼ばれるため、クラス型変数の寿命が終わるとすぐに資源が返却されることが保障できるようになった。これは例外が起こったときでも同様であるため、RAIIは例外安全なコードを書くための鍵となる概念となった (Sutter 1999)。.

28 関係: 例外処理ポリシーメモリリークリソースロック (情報工学)デストラクタ呼出規約クロージャコンストラクタコードの再利用スレッド (コンピュータ)ストリーム (プログラミング)スコープスタックBoostC SharpC++C++11D言語JavaMicrosoft Visual Basic .NETMicrosoft WindowsNullPythonRubySmalltalk標準C++ライブラリ所有権

例外処理

例外処理(れいがいしょり)とは、プログラムの上位の処理から呼び出されている下位の処理で継続不能、または継続すれば支障をきたす異常事態に陥ったとき、制御を呼び出し元の上位の処理に返し安全な状態になるよう回復処理をすること。その際に発生した異常のことを例外と呼ぶ。 継続不能や継続すると問題になる様な状態としては、次のようなものが挙げられる。.

新しい!!: RAIIと例外処理 · 続きを見る »

ポリシー

ポリシー(英語:policy).

新しい!!: RAIIとポリシー · 続きを見る »

メモリリーク

メモリリーク (Memory leak) とは、プログラミングにおけるバグの一種。プログラムが確保したメモリの一部、または全部を解放するのを忘れ、確保したままになってしまうことを言う。プログラマによる単純なミスやプログラムの論理的欠陥によって発生することが多い。.

新しい!!: RAIIとメモリリーク · 続きを見る »

リソース

リソース(英語: resource).

新しい!!: RAIIとリソース · 続きを見る »

ロック (情報工学)

情報工学におけるロック (lock) とは、計算機システム内に複数の動作主体(プロセス,スレッド等)のある環境で、データやデバイスなどのリソースへのアクセス制限を課す同期機構。ロックは並行性制御ポリシーを実施する手法のひとつである。アクセス制限を課す動作を「ロックする」,「ロックを取得する」などと表現する.また対義語として,制限を解除することをunlock(アンロック,ロック解放,ロック解除)と言う..

新しい!!: RAIIとロック (情報工学) · 続きを見る »

デストラクタ

デストラクタ(消去子、destructor)は、オブジェクト指向プログラミング言語でオブジェクトを消去する際に呼び出されて後処理などを行なう関数、メソッドのこと。特にC++では安全なリソース管理を実現するための重要な役割を担う。 なお、本項では類似概念であるファイナライザについても合わせて述べる。.

新しい!!: RAIIとデストラクタ · 続きを見る »

呼出規約

呼出規約(よびだしきやく)ないし呼出慣例(よびだしかんれい)(calling convention)は、コンピュータの命令セットアーキテクチャごとに取り決められるABIの一部で、サブルーチンが呼出される際に従わねばならない制限などの標準である。名前修飾について、データを渡す「実引数」、戻るべきアドレスである「リターンアドレス」、データを戻す「返戻値」などを、スタックなどに対してどのように格納するのか、また各レジスタを、呼び出し側とサブルーチンのどちらの側が保存するか、等といった取決めの集まりである。言語が同じでも、分割コンパイルされリンカでリンクされる相互のプロシージャ間では、呼出し呼出されるならば同一の呼出規約に従っていなければならない。一方で、違う言語の間でも、同一の呼出規約を経由して相互にプロシージャを呼出すこともできる。.

新しい!!: RAIIと呼出規約 · 続きを見る »

クロージャ

ージャ(クロージャー、closure)、関数閉包はプログラミング言語における関数オブジェクトの一種。いくつかの言語ではラムダ式や無名関数で実現している。引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決することを特徴とする。関数とそれを評価する環境のペアであるともいえる。この概念は少なくとも1960年代のSECDマシンまで遡ることができる。まれに、関数ではなくとも、環境に紐付けられたデータ構造のことをクロージャと呼ぶ場合もある。クロージャをサポートした言語のコーディングでは、関数の中に関数を定義することができる。その際に、外側の関数で宣言された変数を内側の関数で操作することができる。主な利点としてはグローバル変数の削減が挙げられる。 典型的にはクロージャは、外側の関数(以下、エンクロージャ)の内側の関数リテラルや、ネストした関数定義によって必要になる。言語により、そのような内側の関数内に出現する自由変数(内側の関数の仮引数でもなく、内側の関数自身のローカル変数でもない変数)の扱いは異なるが、自由変数が、その呼び出しにおけるエンクロージャのその名前の変数を、レキシカルに参照するのがクロージャであり、実行時に外部の関数が実行された際、クロージャが形成される。クロージャは内部の関数のコードとエンクロージャのスコープ内の必要なすべての変数への参照からなる。 クロージャはプログラム内で環境を共有するための仕組みである。レキシカル変数はグローバルな名前空間を占有しないという点でグローバル変数とは異なっている。またオブジェクトのインスタンス変数とは、オブジェクトのインスタンスではなく関数の呼び出しに束縛されているという点で異なる。 クロージャは関数型言語では遅延評価やカプセル化のために、また高階関数の引数として広く用いられる。 例: クロージャを使ったカウンタの例を Scheme で示す。 (define (new-counter) (define c (new-counter)) (display (c)); 1 (display (c)); 2 (display (c)); 3 関数 new-counter の中でクロージャが使用されている。c に代入された無名関数は new-counter 内のローカル変数 count を参照している。c を呼び出すたびに count はインクリメントされていく。.

新しい!!: RAIIとクロージャ · 続きを見る »

コンストラクタ

ンストラクタ(構築子、Constructor)は、オブジェクト指向のプログラミング言語で新たなオブジェクトを生成する際に呼び出されて内容の初期化などを行なう関数、メソッドのことである。対義語はデストラクタ。 オブジェクトの生成は、.

新しい!!: RAIIとコンストラクタ · 続きを見る »

コードの再利用

ードの再利用(コードのさいりよう)またはソフトウェアの再利用とは、既存のソフトウェアまたはソフトウェアの知識を活用し、新たなソフトウェアを構築すること。コードの再利用はプログラミングの黎明期から行われてきた。プログラマは常にコードの一部、テンプレート、関数、プロシージャを再利用している。ソフトウェアの再利用はソフトウェア工学の研究対象である。.

新しい!!: RAIIとコードの再利用 · 続きを見る »

スレッド (コンピュータ)

レッド(thread)とは、CPU利用の単位。プロセスに比べて、プログラムを実行するときのコンテキスト情報が最小で済むので切り替えが速くなる。スレッドは、thread of execution(実行の脈絡)という言葉を省略したものである。 プログラミングの観点からみると、アプリケーションの処理の「実行の脈絡」は1つでないことが多い。これをシングルスレッドで実現しようとするとシグナルやタイマーを駆使してコーディングすることになる。また、複数のプロセスに分割してプロセス間通信で協調動作させるという方法もある。しかし、いずれの場合もそれらの機能を使うための余分な、本来のアルゴリズムと関係ないコーディングが必要となる。スレッドを使用したプログラミングは本来のアルゴリズムに集中しやすくなり、プログラムの構造が改善されるという効果がある。.

新しい!!: RAIIとスレッド (コンピュータ) · 続きを見る »

ストリーム (プログラミング)

トリーム(stream)とはデータを「流れるもの」として捉え、流れ込んでくるデータを入力、流れ出ていくデータを出力として扱う抽象データ型である。ファイルの入出力を扱うもの、メモリバッファの入出力を扱うもの、ネットワーク通信を扱うものなどさまざまなものがある。特にファイルの入出力には、標準ストリームと呼ばれる特別なストリームが用意されていることもある。.

新しい!!: RAIIとストリーム (プログラミング) · 続きを見る »

スコープ

プログラミングでのスコープ(scope, 可視範囲)とは、ある変数名や関数名といった名前を参照できる範囲のこと。ある範囲の外に置いた変数等は、通常、その名前だけでは参照できない。このときこれらの変数はスコープ外である、「見えない」といわれる。 プログラミングでは、予期しない誤作動を避けるためにも、それぞれの作業段階で必要のない名前はできるだけ参照されないようにすることが望ましい(特に、大域変数は便利な場合もあるが、危険でもある)。たとえば、CERT C コーディングスタンダードには、「変数と関数の有効範囲を最小限にする」(DCL19-C.)というレコメンデーションがある。.

新しい!!: RAIIとスコープ · 続きを見る »

スタック

タックは、コンピュータで用いられる基本的なデータ構造の1つで、データを後入れ先出し(LIFO: Last In First Out; FILO: First In Last Out)の構造で保持するものである。抽象データ型としてのそれを指すこともあれば、その具象を指すこともある。 特にその具象としては、割込みやサブルーチンを支援するために極めて有用であることから、1970年代以降に新しく設計された、ある規模以上のコンピュータは、スタックポインタによるコールスタックをメモリ上に持っていることが多い。.

新しい!!: RAIIとスタック · 続きを見る »

Boost

Boost (ブースト)とは、C++の先駆的な開発者のコミュニティ、およびそのコミュニティによって公開されているオープンソースライブラリのことを指す。コミュニティとしてのBoostはC++標準化委員会の委員により設立されており、現在でもその多くが構成員として留まっている。このような経緯もあり、BoostコミュニティはC++の標準化において大きな影響力を有している。実際に標準化委員会が発表した「TR1」の2/3以上がBoostライブラリを基にしている。Random, Regex, ThreadなどはいずれもC++11規格の標準ライブラリとして正式に導入・標準化されている。このことから、Boostは考案された新機能を標準化させる前の試験運用の場であるとも言える。 Boostで公開されるライブラリはコミュニティの公開レビューによって精選されている。Boostを使用して作成したプログラムは、商用、非商用を問わず無償のの下でライセンスされる。 Boostはテンプレートなどを活用して積極的にメタプログラミングやジェネリックプログラミングの技法を取り入れて行く傾向がある。そのためBoostライブラリの利用者にはC++の現代的な記述に慣れていることを要求される。 。.

新しい!!: RAIIとBoost · 続きを見る »

C Sharp

C#(シーシャープ)は、アンダース・ヘルスバーグが設計(デザイン)したプログラミング言語であり、構文(syntax)は(名前にもある通り)C言語や、C言語風に構文が設計されたC++やJavaなどの影響があるが、構文以外についてはヘルスバーグが以前の所属であるBorlandで設計したDelphiからの影響がある。 Microsoftによる謳い文句としては、マルチパラダイムプログラミング言語、強い型付け、命令型、宣言型、手続き型、関数型、ジェネリック、オブジェクト指向の要素を持つ、などといった点が強調されている。 CLIといった周辺も含め、Microsoftのフレームワーク「.NET Framework」の一部である他、VJ++で「非互換なJava」をJavaに持ち込もうとしたような以前のMicrosoftとは異なり、その多くの仕様を積極的に公開し標準化機構に託して自由な利用を許す(ECMA-334、ISO/IEC 23270:2003、JIS X 3015)など、同社の姿勢の変化があらわれている一面でもある(実際に「Mono」という、フリーソフトウェアの定義に合致したライセンスの、コミュニティによる実装がある)。.

新しい!!: RAIIとC Sharp · 続きを見る »

C++

C++(シープラスプラス)は、汎用プログラミング言語の一つである。日本語では略してシープラプラ、シープラなどとも呼ばれる。.

新しい!!: RAIIとC++ · 続きを見る »

C++11

C++11は、プログラミング言語 C++ のISO標準 ISO/IEC 14882:2011 の略称である。規格の策定中は2009年中の標準化を目指していたため、C++0x という仮称で呼ばれていた。 ISO/IEC 14882:2003 (C++03) に代わるものとして、2011年8月12日にISOによって承認された。後継のC++14が2014年8月18日に承認されている。 コア言語への機能追加や標準C++ライブラリの拡張を施し、C++TR1ライブラリの大部分を(数学的特殊関数ライブラリを除いて)取り込んでいる。.

新しい!!: RAIIとC++11 · 続きを見る »

D言語

D言語(ディーげんご、D programming language)は、プログラミング言語のひとつ。C言語をベースとしABI互換を保ちつつも、テンプレートによるジェネリックプログラミングやオブジェクト指向プログラミング、関数型プログラミングなどをサポートするマルチパラダイムプログラミング言語である。.

新しい!!: RAIIとD言語 · 続きを見る »

Java

Java(ジャバ)は、狭義ではプログラミング言語Javaを指す。広義では言語仕様以外にも、仕様が与えられているJavaクラスライブラリやJava仮想マシン、さらにはJDKやJREなどの公式のものをはじめとする、場合によってはサードパーティのものなどを含め曖昧にJavaプラットフォームと総称されるようなものなどのエコシステムなどを指すこともある。構文についてはJavaの文法の記事を参照。.

新しい!!: RAIIとJava · 続きを見る »

Microsoft Visual Basic .NET

Visual Basic.NET (ヴィジュアル ベーシック ドットネット)はマイクロソフトが開発したプログラミング言語およびその処理系。VB.NETと略されて呼ばれることが多い。.NETに対応していない旧来のMicrosoft Visual Basic(バージョン6.0まで、VB6)の後継である。 なおVisual Studio 2005以降では、「Visual Basic.NET」や「VB.NET」という呼称ではなく、従来のように「Visual Basic」という呼称が用いられるようになっているが、6.0以前との互換性はなく、また.NETベースであることには変わりない。.

新しい!!: RAIIとMicrosoft Visual Basic .NET · 続きを見る »

Microsoft Windows

Microsoft Windows(マイクロソフト ウィンドウズ)は、マイクロソフトが開発・販売するオペレーティングシステム (OS) の製品群。グラフィカルユーザインタフェース (GUI)を採用している。.

新しい!!: RAIIとMicrosoft Windows · 続きを見る »

Null

Null(ヌル、ナル)は、何もない、という意味で、プログラミング言語などコンピュータ関係では、「何も示さないもの」を表すのに使われる。同様のものに、nil が使われることもある。他の名前のこともある。 本来 はドイツ語において数値の0(ゼロ)を意味する単語であり、ドイツ語における発音は である。一方、英語においては と発音される。実際の発音はを参照のこと。 日本においては原語に近い「ヌル」という発音が定着しているが、英語読みに近い「ナル」という発音で呼ばれる場合もある(専門書、国家試験など)。 プログラミング言語などにおいて、nullやnilといった予約語や定数名のものなどの意味がどういったものかは言語により、場合によっては実装ごとに違う。ポインタや参照のある言語では、ヌルポインタなどと呼ばれる何も指さない特別なポインタであることもあるし、Pythonのようにオブジェクトのこともある。古典的なLISPのように真理値の偽(の代表)や空リスト「()」を兼ねたもの(それらと同じもの)だったりすることもある。.

新しい!!: RAIIとNull · 続きを見る »

Python

Python(パイソン)は、汎用のプログラミング言語である。コードがシンプルで扱いやすく設計されており、C言語などに比べて、さまざまなプログラムを分かりやすく、少ないコード行数で書けるといった特徴がある。.

新しい!!: RAIIとPython · 続きを見る »

Ruby

Ruby(ルビー)は、まつもとゆきひろ(通称 Matz)により開発されたオブジェクト指向スクリプト言語であり、スクリプト言語が用いられてきた領域でのオブジェクト指向プログラミングを実現する。 また日本で開発されたプログラミング言語としては初めて国際電気標準会議で国際規格に認証された事例となった。.

新しい!!: RAIIとRuby · 続きを見る »

Smalltalk

Smalltalk(スモールトーク)は、Simula のオブジェクト(およびクラス)、LISPの徹底した動的性、LOGO のタートル操作や描画機能に、アラン・ケイの「メッセージング」というアイデアを組み合わせて作られたクラスベースの純粋オブジェクト指向プログラミング言語、および、それによって記述構築された統合化プログラミング環境の呼称。 Smalltalk で一語であり、「Small Talk」「SmallTalk」などは誤りである。 大規模な開発実績としてはCargill Lynx Projectがあり、国産製品の開発実績としてはMCFrameがある。.

新しい!!: RAIIとSmalltalk · 続きを見る »

標準C++ライブラリ

標準C++ライブラリは、C++の標準規格で定められたライブラリである。これはクラスと関数などの集合であり、汎用的なコンテナとそれを操作する関数、関数オブジェクト、汎用的な文字列とストリーム(コンソールやファイルとの入出力)、言語機能サポート、平方根を求めるなどといった日用的な関数などから構成される。また、ISO C90の標準Cライブラリも含んでいる。標準C++ライブラリはそのほとんどが名前空間std内にある。 Standard Template Library (STL)は標準C++ライブラリの一部分で、コンテナ、アルゴリズム、イテレータ、関数オブジェクトなどを含むものである。中にはSTLという言葉を標準C++ライブラリと混同して使う者もいる。 標準C++ライブラリのヘッダには末尾に.hが付かない。.

新しい!!: RAIIと標準C++ライブラリ · 続きを見る »

所有権

所有権(しょゆうけん)とは、物の全面的支配すなわち自由に使用・収益・処分する権利。日本の民法では206条以下に規定がある。.

新しい!!: RAIIと所有権 · 続きを見る »

ここにリダイレクトされます:

Resource Acquisition Is Initialization

出ていきます入ってきます
ヘイ!私たちは今、Facebook上です! »