次の定義に出会いました。
static
オブジェクトは、構築および作成された時点からプログラムの終了まで存在するオブジェクトです。したがって、スタックおよびヒープベースのオブジェクトは除外されます。静的オブジェクトは、プログラムが終了すると破棄されます。つまり、実行が終了するとデストラクタが呼び出されmain
ます。
スタックおよびヒープベースのオブジェクトが除外されるのはなぜですか???
スタックとヒープについて私が知っていることは次のとおりです。スタックは、実行前にすべての変数が格納されるシステム メモリの一部です。ヒープは、動的に割り当てられたメモリなど、実行時にすべての変数が格納されるシステム メモリの一部です。これは、コードで整数変数を宣言し、i
それに say の値を割り当てると123
、コンパイラはコンパイル時 (実行前) に値を認識するため、それがスタックに格納されることを意味します。しかし、ポインター変数を定義し、それを別の場所で初期化したい場合、それはコンパイル時にコンパイラーに認識されないため、ヒープに格納されます。