問題タブ [object-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++ - オブジェクトのメソッドの真のアドレス
メソッド ポインターを作成できること、およびそれらが一般的に関数ポインターとは異なることを知っています。それらの間の変換は許可されていません。メソッド ポインターには、ポインターの調整方法などに関する多くのデータが含まれる場合がありますthis
。
特定のメソッドを実行しているコードの実際のアドレスを取得する方法を知りたいです。このアドレスはいかなる方法でも延期されませんが、特定のメソッドが属する型の識別子として使用されます - RTTI に少し似ていますが、このコードは通常 1 つのユニットでしか利用できないため、ライブラリの境界に影響されないという利点があります。 .
編集:
getType()
オブジェクトの型を返すメソッドを追加しないのはなぜですか?
自分で作成したクラスだけでなく、このように使えるようにしたいからです。私がやろうとしているのは、基本的にvariant
クラスの実装です。これは、基本的にすべてを受け入れ、特定のタイプの void* getVariantId() の特殊化が存在する場合に提供されます。
だから私は書くことができます:
fromType
を使用getTypeId
して型を表す値を取得し、 にキャストされたオブジェクトのポインタとともにそれを強化するという考え方ですvoid*
。toType
一方、`getTypeId::get から取得した値とオブジェクトに格納された値を比較します。一致する場合、内部で保持されているオブジェクト ポインターが元の型に再解釈されて返されます。
このソリューションの優れた点は、タイプ x を定義する共有ライブラリ X がある場合でも、ライブラリ X を個別に使用するライブラリ Y と Z がタイプ x が同じであることに同意することです (たとえば、Y でバリアントを作成する場合)。 Z に渡される)、X::method の原因アドレスは同じままです。Y または Z ライブラリ (ただし X ではありません!!!) の作成者として、X ライブラリで RTTI が有効になっていることを確認する必要はありません。
EDIT2:
これを実現するための実装に依存しない方法はないことがわかりました。ただし、これは作成できない機能ではなく、通常は必要ないため、存在しない機能の癖だと思います。何を達成したかったのか、どのように計画していたのか、まだ明確になっていないと思います。そう:
ライブラリとは、ここでは共有ライブラリ (.dll、.so など) を意味します。
純粋仮想ではないすべてのメソッド (定義されているすべてのメソッドを意味します) には、実装が必要です。この実装は、1 つの追加パラメーターを受け入れる関数として動作します
this
。仮想関数は、呼び出し元側でのみ異なります。X::foo
クラス X とそのメソッドを例に取りましょう。このメソッドは X 型にのみバインドされ、Y 型が継承してもこのメソッドは残るX::foo
ため、型を識別するには十分X
です。仮想メソッドのオーバーライドまたは子クラスのメソッドのカバーXchild
は、事実上、新しいメソッド Xchild::foo を新しいアドレスで定義することです。次に、Xchild::foo
を表すために使用できますがXchild
、 ではありませんX
。タイプ X (正確にはすべてのメソッド) がライブラリ libX で定義されており、libY と libZ の両方が libX を使用しており (ただし、お互いを認識していない)、X の最初のメソッドを使用して独自の目的で getTypeId を定義している場合、それを表します (これは libX 開発者に何も課さないことに注意してください)、彼らは X 型が何であるかについて合意しています。アプリケーション開発者が libY を使用してバリアントを取得し、それを libZ に渡す場合、両方が言及されたタイプを適切に認識します。
私は type-casting-variant を開発しようとはしていません - myVariant に渡された実際のポインタが Xchild だったとしても、X として保存されたバリアントは X としてのみ読み取ることができます。特定のインスタンスの最上位クラスのタイプを取得することに興味はありません-バリアントの作成に使用されたクラスだけです。
java - Javaでアドレスの代わりに文字列を出力するには?
私の出力は "[B@b42cbf" で、エラーはありません。
「Server Check」という文字列である必要があります。
アドレスではなく文字列を出力するようにコードを修正するにはどうすればよいですか?
オブジェクトを出力するコードは何度か変更されましたが、現在は次のようになっています。
私のパケットクラスは次のとおりです。
ObjectOutputStream を介してパケットを送信し、ObjectInputStream で受信します。オブジェクトは (Packet) でパケットに変換されます。これがどのように機能するかは、次のように確認できます。
これがリスナーです。
c# - 文字列を使用した C# アドレス ボタン
ボタンのアドレス指定に問題があります。プログラムには多くのボタンがあり、すべてのボタンで使用される関数があります。これで最後にクリックされたボタンの名前を取得しています:
次に、ボタンのテキストを変更します。
しかし、ボタンの名前として ClickedButton を使用することはできません。
前もって感謝します!
c++ - WINAPIReadProcessMemoryは常に同じアドレス
WINAPI関数を使用してプロセス(アドレス:0x58F03C)からいくつかのデータを読み取りましたReadProcessMemory
:
プロセスを再開するたびにアドレスが変わるので、常に同じアドレスを取得する方法があるのだろうかと思いました。それができる「トレーナープログラム」がたくさんあるので、あるに違いありません。読み取り/書き込みに適したアドレス値をどのように取得しますか?
現在、で値をスキャンして取得し、CheatEngine
変更された値を次のスキャンで実行しています。
ありがとう。
linux - アドレスを見つける方法はカーネルに属しています
テストのためにカーネルのアドレスを見つける必要があります。1394ファイアウェアからカーネルにコードを挿入したいのですが、アドレスがカーネルに属していることを見つける方法がわかりません。どうもありがとう
kernel - ヒープが割り当てられていないメモリ (カーネル アドレス)
カーネルでアドレスを見つけたときに質問があります。カーネルに hello モジュールを挿入します。このモジュールでは、このソリューションを使用しました。
今のところ、 を使用kmalloc
してアドレスを取得できますvirt_to_phys
。
しかし、私はのアドレスを見つける方法を知りたいchar mystring[]="this is my address";
. これはヒープ割り当てメモリではありませんよね?いくつかの関数でそれを見つける方法は?
PS: ツールを使用してメモリ全体、物理アドレスをダンプしました。
delphi - オーバーロードメソッドのアドレス位置の取得
オーバーロードされている関数/プロシージャ/メソッドのすべてのアドレス位置を取得するにはどうすればよいですか?
たとえば、Dialogs.MessageDlgPosHelpは、2つの異なるバージョン(デフォルトボタンなしとデフォルトボタンあり)でオーバーロードされています。2つの関数のアドレス位置を取得するにはどうすればよいですか?
c++ - 構造体のアドレスを別の構造体に割り当てる方法は?
私が持っているとしましょう
そして2クラス。
最初のクラスのメソッドで、構造体のインスタンスを作成します。
今、この構造体のアドレスを別のクラスのコンストラクターに渡したい
ここで 2ndClass で変更された構造体の値を使用したい - 以下を読んでください...
2 番目のクラスには次のものがあります。
ヘッダ:
cpp:
これは明らかに structName のコピーを作成します。
私の質問は次のとおりです。structName から structName2 にアドレスを割り当てて、構造体に読み書きし、2 番目のクラスを離れた後に最初のクラスでそれらの値を使用できるようにするにはどうすればよいですか? 構造体へのポインタを使用せずにどうすればよいですか?
ios - アドレスでシンボルを取得 (バイナリのシンボル化、iOS ビルド)
興味深いシンボルのアドレスを持つ割り当てインストルメントのスナップショットがあります。
そして、このアドレスがコードのどこにあるか知りたいです。対応する dSYM ファイルがあります。atosym
コマンドライン ツールを使用しようとしましたが、間違った記号が表示されます (アプリとは関係ありません)。
入手方法は?
PS: バイナリは XCode 4.3.2 でビルドされ、コード言語は C++、armv7 アーキテクチャ、リリース ビルド構成です。
c++ - 渡されるイテレータのタイプ/ポインタに関係なく、ポイントされた要素のアドレス
次の関数の最も一般的な構文は何でしょうか。
イテレータmyIterator(rawポインタの場合もあります)が必要であり、目標は、が指すオブジェクトのアドレスをrawポインタに割り当てることmyIterator
です_ptr
。現在使用&myIterator[0]
していますが、演算子[]を持つのはランダムアクセスイテレータだけであることに気付きました。
では、すべてのタイプの標準イテレーターとポインターで機能する構文はありますか?