問題タブ [variable-address]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 変数名の文字列を使用して変数アドレスを取得する方法は?
シンプルで迅速な一般的なコンソール デバッガーのようなことをしたいと考えています。この小さなライブラリは、メイン プログラムに組み込む必要があります。
したがって、コンソールモードでプログラムを実行しているときに、次のようなことをしたいと思います:
"input: print i" "output: 15.53" "input: set color 255" "input: print color" "output: 255"
また、「i」と「color」の両方が、コード内で事前に宣言された変数になります。これはインタープリターではなく、変数の内容を確認および変更するための便利な方法です。
GDB は、私がコーディングするコンピューター グラフィックス プログラムにこのコードを使用するため、私の問題に対する有効な解決策ではありません。そのため、「リリース モード」で実行できる必要があります。
これまでに見つけた非常に単純な解決策の 1 つは、void ポインター、ポインターのデータ型、および変数名を表す文字列を含む構造体のリストを作成することです。しかし、それは私が想像するほど自動的ではありません。
C++ で color という名前の整数変数のアドレスを取得するために、文字列 (たとえば "color") を変換する方法はありますか? そうでない場合、どうすれば問題を解決できますか?
c - ローカル変数のアドレスは、Structureのメンバーポインタに割り当てられます
ローカル変数をメンバー構造体ポインターに割り当てました。そして最後にそれをnullにします。nullポインタを与える代わりに、それにアクセスしようとすると0を与えます。
c++ - C/C++ で char ポインターを逆参照しますか?
DWARF および ELF 情報を使用するプログラムで作業しています。Pin というツールを使用して別のプログラムにハマっています。「Y」プログラムで宣言されたグローバル変数からのアドレスを取得し、それを「X」と呼ぶ Pin モジュールにフックします。
これらのグローバル変数のアドレスを取得しています。残念ながら、それらを逆参照しようとすると問題が発生します。例(現在、私は手動で行っていることを行っているかどうかを確認しています):
そのアドレスに格納されている変数をchar *
単語に取得する必要があります。この場合、2 つのポインターを逆参照する必要がありますか? アドレス、そしてそのアドレスにchar *
保存されている?
これは、変数を逆参照する場合は完全に機能しint
ますが、char ポインターまたは変数を逆参照しようとすると、non-ASCII
値が取得されます...
c - ウィンドウがローカル変数を格納するためにスタックを使用するのはなぜですか?
なぜCはローカル変数を格納するためにスタックを使用するのですか? これは、独立したメモリ空間を持つためですか、それともスコープ外になるとすべてのローカル変数とオブジェクトを自動的にクリアする機能を持つためですか?
同じことについてさらにいくつか質問がありますが、
質問 1) ローカル変数は命令部分からどのように参照されますか。NewThreadFunc
createThread 関数によって呼び出される関数を考慮してください。
このスレッドのスタックは次のようになります。
l_iSumLocalVar
さて、私の質問は、この関数を実行しているときに、CPU がローカル変数 ( 、l_iLocalVar1
およびl_iLocalVar2
)のアドレスをどのように知るかということです。これらの変数は、値をフェッチする必要があるアドレスを格納するポインターではありません。私の質問は、上記のスタックに関するものです。
質問 2) この関数がさらに他の関数を呼び出した場合、スタックはどのように動作しますか? 私が知っているように、スタックはさらに分割されます。これが真の場合、呼び出し先関数のローカル変数が呼び出された関数から隠される方法。基本的に、ローカル変数がスコープ ルールを維持する方法は?
これらが非常に基本的な質問である可能性があることは知っていますが、これらに対する答えを思いつかない方法もあります。
c++ - ポインターを使用してC ++でchar変数のアドレスを表示しますか?
char 変数のアドレスを表示するにはどうすればよいですか? 型キャストを使用して、最初に int または float または void などに変換し、ポインターを使用してアドレスを表示する解決策を見つけました。しかし、型キャストなしで特定のソリューションに代わるものはありますか? のようなポインタを使用して
ただし、この場合、ポインタも var のアドレスを指していますが、var の値が表示されます。なぜ?もしそうなら、ポインタを使って var のアドレスを取得するにはどうすればよいでしょうか? 型キャストを使用せずに
または、特定の問題のために任意の演算子をオーバーロードする必要がありますか?