「現代のC ++リアル30話す>ノート01 |ヒープ、スタック、RAII:リソースを管理する方法でC ++?

1、ヒープ(ヒープ)、動的に割り当てられたメモリ領域、割り当ては手がリリースされる後(新、削除、malloc関数、無料)

    このようにして、メモリを割り当てるために空きメモリを必要とするので、メモリリーク、またはメモリの断片化の問題を引き起こす可能性があります。

図2に示すように、スタック(スタック)、関数呼び出しは、ローカル変数と呼ばれるデータ領域を生成し

   配布、リリースシンプルなだけにポインタを移動し、LIFO、メモリの断片化は発生しません。このように割り当て、スタック上のより適切な。

   しかし、時には、オブジェクトがまたは大規模なオブジェクトを含め、スタックに配置すべきではないことはできません、オブジェクトのサイズはコンパイル時に決定することができない、オブジェクトは、関数の戻り値ですが、原因特別な理由のために、あなたは、オブジェクトの値が返されます使用しないでください。

図3に示すように、RAII、C ++特有のリソース管理は、スタックとデストラクタを使用することによって達成しました。そして、メモリをクリーンアップするだけでなく、ファイルを閉じる含めるように限定されるものではなく、同期ロックは、他の重要なシステムリソースの解放を発表しています

4、スタックの巻き戻し

    異常が発生した場合、デストラクタを呼び出します

5、どのようにスタックに割り当てやヒープ上に割り当てを検討します

    ここで、現在の機能を超えてライフサイクル、一般的に必要ヒープ(又はオブジェクトの運動伝達を使用して)。スタックとの関係では逆に、現在の関数内のライフサイクル、オン

 

おすすめ

転載: www.cnblogs.com/573177885qq/p/12042129.html