どのように破壊ローカル変数がブロックで終了し、通常と呼ばれるC++?

StackOverflow https://stackoverflow.com/questions/2605352

  •  25-09-2019
  •  | 
  •  

質問

C++automagically話destructorsのすべてのローカル変数のブロックを逆順かどうかにかかわらずブロックで終了し、通常制御がより)または例外がスローされます。

のように期 スタックの巻き戻し のみに適用されます。どのように、旧プロセス(通常のブロック)という破壊に関するローカル変数?

役に立ちましたか?

解決

オブジェクトは自動的に破壊で"という体制を取っている範囲を".これを"自動保存再生"もっとガーベージコレクションがいくつか論文という名前を使った意味するガベージコレク使用された場合の適切なペアリングの開閉、ロック、またはその他の資源の獲得とその適切なリリース、そしてデザインパターンの 資源獲得の初期化(機は、既販の"), や皮肉が一つの大きな側面として、rau-α(なリソースの初期化または取得ではなく、その破壊に

他のヒント

はスタック巻き戻し、それは通常の実行中スタックのみ実行メソッドの戻り(またはブロックを終了する)を呼び出すメソッド(またはブロック)のコンテキストに巻き戻されるだけということだが、これらの場合の両方で起こります。ローカル変数はスタックに割り当てられているので、彼らは、割り当ての順序を逆にクリーンアップされ、それが巻き戻しと呼ばれるこのプロセスです。それはあなたがLIFO構造に格納したいことを他のタイプのデータを処理するよりも異なるません - 例えばをアンドゥ、リドゥます。

例外がスローされたときに例外をキャッチすることができるものが見つかるまで、またはそれが処理されない例外ハンドラが呼び出されるその時点でスタックのトップに達するまでハンドラがゼロまたはそれ以上の方法を介してを介してスタックをアンワインドしますます。

唯一の例外処理の場合には巻き戻し用語スタックを使用する慣例のようですが、それはこれらのケースのそれぞれで発生した同じプロセスです。返すと呼ばれるスタック巻き戻さによる出法に特有のケースでは、コードのスコープのブロックが終了したときに何が起こるかの命名のための任意の規則があるようには思えません。

それがスコープの外に出たとき、

は、ローカル変数が破壊されます。おそらく、プロセスは、「スコープの外出」のように呼ばれているのですか?

私は、このために名前があるかわかりません。スタック変数は、のようにの自動つまり、それらについて誰も心配、今までに、この自動クリーンアッププロセスの名前を与えるためにも、十分ではありません。

あります

コールも "スコープの外出"、私は推測します。

私はいつもそれが「auto変数がスコープ外に行く」「スコープの外出」またはより正確と話を聞いた。

あなたがしているの提示は、メソッドの呼び出しが実際にマシンコードに実装されているか何を、私はそれが使用呼び出し規則に依存するであろうと言う希望の場合

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top