「stackalloc」キーワードが可変長を受け入れる理由は何ですか?
この命令がスタックのフレームに割り当てられたバッファへのポインタを返す場合、コンパイラはそれをどのように管理しますか? スタックフレームを整理するために呼び出されるたびに、実行時に関数を再コンパイルしますか?
ありがとう。
「stackalloc」キーワードが可変長を受け入れる理由は何ですか?
この命令がスタックのフレームに割り当てられたバッファへのポインタを返す場合、コンパイラはそれをどのように管理しますか? スタックフレームを整理するために呼び出されるたびに、実行時に関数を再コンパイルしますか?
ありがとう。
stackalloc
キーワードが可変長を受け入れる理由は何ですか?
それができることは便利で望ましいので、言語設計者はそれを許可することにしました。
この命令がスタックのフレームに割り当てられたバッファへのポインタを返す場合、コンパイラはそれをどのように管理しますか? スタックフレームを整理するために呼び出されるたびに、実行時に関数を再コンパイルしますか?
localalloc
命令はスタック現在のフレームの後にメモリを割り当て、割り当てはアドレスをローカルに戻すだけです。したがって、別のメソッドを呼び出しても上書きされないように、スタック フレームの末尾を更新する以外は、何も再計算する必要はありません。
(注: スタックについて議論するときはいつものように、これは実際には実装の詳細です。JIT は理論上、セマンティクスを尊重する限り、好きな場所から自由に割り当てることができます)