-1

IL (コンパイル済み C#\VB コード) から逆コンパイラを作成しています。Cで参照を作成する方法はありますか?

編集:
スタックのようなポインターよりも高速なものが必要です。そのようなことはありますか?

4

2 に答える 2

6

参照は、構文的にシュガー コーティングされたポインターにすぎません。ポインターで問題ありません。

于 2012-07-17T09:19:55.297 に答える
1

スタックポインターは、2 つの完全に独立した概念です。

参照はポインタのようなもので、変数をコピーせずにアクセス/渡す方法です。一方、スタックとヒープは、変数が存在する 2 つの異なる場所です。変数がスタック上またはヒープ上に存在するかどうかの決定は、変数を渡す方法とは完全に独立しています。

  • ローカル変数が必要な場合は、ライフタイムが関数スコープに自動的に結合され、スタック上で宣言します。割り当ては高速ですが、関数スコープが終了するとオブジェクトはなくなります。これを考慮して、変数を値または他の関数へのポインターで渡すことができます。
  • 関数スコープを生き残る変数が必要な場合は、変数をグローバル (または静的) にするか、変数をヒープに動的に配置する必要があります。割り当ては少し遅くなりますが、そこにあると、他のように使用できます。値またはポインターで渡すことができます。(最終的に動的に作成されたオブジェクトの割り当てを解除する必要があることに注意してください。)

ヒープ割り当てが実際にパフォーマンスのボトルネックである場合は、可能であれば (スタック上で) 自動変数を使用するようにしてください。次に、割り当てパターンのプロファイリングを行います。最後に、割り当て戦略を最適化します

于 2012-07-17T09:48:26.373 に答える