重複の可能性:
.NET ローカル変数はどこに保存されますか?
function storeonstack()
{
int a;
int b;
int c;
a=1;
b=1;
a=2
c=2;
}
これらの値の型がどのようにスタックに格納されているかを誰かが説明してくれますか?
重複の可能性:
.NET ローカル変数はどこに保存されますか?
function storeonstack()
{
int a;
int b;
int c;
a=1;
b=1;
a=2
c=2;
}
これらの値の型がどのようにスタックに格納されているかを誰かが説明してくれますか?
実際には*、値型はメソッド内のローカル変数の場合はスタックに格納され、参照型のメンバーの場合はヒープに格納されます。ローカル変数がクロージャに含まれている場合は、ローカル変数もヒープに格納されることがあります。これは、関数が終了した後(およびスタックフレームがクリーンアップされた後)に変数が存続できるようにするために必要です。ローカル変数は、スタックにスピルバックされる前に、操作で使用されるときにレジスタに格納される場合もあります。JITの最適化によっては、ローカル変数がレジスターにのみ存在する場合と、まったく存在しない場合があります。ただし、メンバー変数は常に存在する必要があります。
*はい、技術的には、スタックやヒープなどが存在するという保証はありませんが、正直に言うと、すべてではないにしても、ほとんどの.NET実装には、Cプログラムのようにスタックとヒープがあります。