問題タブ [memory-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++ - VSC ++、不正なアドレスでの仮想メソッド、奇妙なバグ
この男:
呼び出されると、完全に再コンパイルした後でも、アクセス違反でプログラムがクラッシュしました。すべてのメンバー関数と仮想メンバー関数のメモリアドレスは正しいですが(デバッグモードのメソッドにマウスを合わせた)、この関数のメモリアドレスは0xfffffffcでした。
すべてが正常に見えました:'this'ポインター、そしてこの関数呼び出しまですべてが正常に機能します。この関数もかなり古く、私は長い間変更していませんでした。いくつかの作業の後で問題が突然発生しましたが、何が起こっているのかを確認するためにコメントしましたが、成功しませんでした。
だから私は仮想を削除し、コンパイルしました、そしてそれはうまくいきます。仮想を追加してコンパイルしましたが、それでも問題なく動作します。基本的に何も変更していませんが、以前に完全な再コンパイルを行ったのに、当時はまだエラーが発生していたことを覚えています。
問題を再現できませんでした。しかし今、それは戻ってきました。何も変更しませんでした。仮想を削除すると問題が修正されます。
c++ - 住所で戻る場合、これは範囲外になりませんか?(SDL)
これは、lazyfooのSDLチュートリアルのコード例です。
ここで、optimizedImageが戻ったときにスコープから外れるべきではありませんか?それはローカルであるように見てください。
c# - .NET: オブジェクトの格納場所またはアドレスを表示しますか?
オブジェクトの「アドレス」を取得する方法はありますか? これはデモンストレーション用です。これは一般的には悪い考えであり、コードとして機能する場合は理解していunsafe
ます。プロジェクトは、安全でないコードを許可するように調整されています。しかし、私の試みは失敗しました。私がこれまでに持っているコードはコンパイルされていません:
Error: Cannot take the address of, get the size of, or declare a pointer to a managed type ('object')
メモリアドレスを取得できない場合でも、メモリスロットまたはそのオブジェクトの場所を示す何かが考えられます。
背景: 私の意図は、値渡しと参照渡しの違いを示すデモを作成し、これらのオブジェクトの場所をダンプすることです。
2010 年 6 月 27 日追加:
私は最終的に、.NET プログラム自体からそれを行うという考えを放棄しました。良い解決策にはならないようです。たとえそれが機能したとしても、コードが乱雑になり、結果を簡単な方法で説明したり、デモ目的で使用したりすることはほとんどできません。以下の回答でアドバイスされている方法で、優れた(CLR対応を意味する)デバッガーを使用して実行したいと思います。
デバッグは、構成設定のオプションを有効にすることで VS 内で改善できますがEnable Unmanaged Debugging
、残念ながら、Visual Studio の無料エクスプレス エディション (現在自宅にある唯一のバージョン) では利用できません。手動で機能させる方法はありますか?Enable Unmanaged Debugging
少し苦労した後、WinDbg を提供するDebugging Tools for Windowsをインストールしました。何年も前にドライバー開発に使用した優れたツールです。今では巨大なパッケージの一部です。指示に従って、SOS.DLL の方法を成功させようとしましたが、成功しませんでした。このDLLも見つかりません。このソリューションでもEnable Unmanaged Debugging
、プロジェクトにフラグが必要なようです...
operating-system - MMU および TLB ミス
次のように仮定します。ワンレバーページングの仮想メモリを備えたシステムがあり、MMU があり、TLB はソフトウェアによって制御されています。
わかりました..では、私がプロセスであり、仮想アドレス vaddr の RAM で単語を読み取りたいとします。
そのため、CPU は MMU vaddr を提供し、MMU は vaddr の最上位 5 ビット (と仮定) を持つエントリがあるかどうかを TLB でチェックします。そこにある場合...すべて問題ありません。物理アドレスを計算し、すべてうまくいきます。
今..それがTLBになかったとします。この場合、MMU は割り込み (ページ フォールト) を発生させます。わかりました..今、私はページ違反のハンドラーにいます。
PBR (ページ ベース レジスタ) には、ページ テーブルの開始アドレスがあります。ここで私の質問です。この住所は物理的な住所ですか? 1) プロセスの仮想アドレス空間で何らかの形で予約する必要があります (そのようなことは聞いたことがありません) 2) このアドレスが TLB にない場合は、次のようになります。再びページフォールトが発生し、無限ループが発生します。
テーブル内のアドレスに関する同じ質問。2 レベルのページングがあるとします。第 1 レベルのテーブル (第 2 レベルのテーブルを指す) のエントリのアドレスは、何らかの形で仮想か物理か?
ありがとう。
java - Javaを使用してアドレスから値を取得するにはどうすればよいですか?
私がJavaで書いている難読化プログラムの場合、特定のアドレスで値を取得する方法を見つける必要があります。たとえば、16進エディタで開いたプログラムでは、アドレス0000001Fは16進値「00」です。さらに、特定のメモリアドレスに書き込むことはできますか?たとえば、0000001Fに書き込み、「00」から「FF」に変更します。
c++ - C++ で特定のメモリ アドレスに格納されている変数の名前を返す方法
この素晴らしいサイトから非常に多くの Google 検索結果が表示された後、初めてここに投稿します。
基本的に、特定のメモリアドレスに格納されている変数の名前を見つけたいと思います。私が書いた単一の値を編集するメモリ編集アプリケーションがあります。問題は、この値を保持するアプリケーションにパッチが適用されるたびに、新しいメモリ アドレスをアプリケーションにハードコードして再コンパイルする必要があることです。これには非常に時間がかかります。それを維持することはほとんど価値がありません。
私がやりたいのは、特定のメモリアドレスに格納されている変数の名前を取得することです。これにより、実行時にそのアドレスを見つけて、それを編集するメモリアドレスとして使用できます。
これはすべて C++ で記述されています。
前もって感謝します!
編集:
.txt ファイルからデータをストリーミングすることにしましたが、WriteProcessMemory() でメモリ アドレスとして使用するために文字列を LPVOID に変換する方法がわかりません。これは私が試したことです:
コードは構文に関してはすべて正しく、コンパイルして実行できますが、WriteProcessMemory エラーが発生し、LPVOID 変数に問題があるとしか思えません。質問の使用を拡張することが規則に違反している場合はお詫び申し上げます。違反している場合は編集を削除します。
c - メモリアドレスリテラル
16進形式のリテラルメモリアドレスが与えられた場合、このメモリ位置をアドレス指定するポインタをCで作成するにはどうすればよいですか?
私のプラットフォーム(IBM iSeries)のメモリアドレスは128ビットです。Cタイプlong long
も128ビットです。
文字列(char配列)へのメモリアドレスがあると想像してください。C622D0129B0129F0
このメモリ位置を直接アドレス指定するための正しいC構文を想定しています。
const char* const p = (const char* const)0xC622D0129B0129F0ULL
私はULL
接尾辞を使用して、unsignedlonglongリテラルを示します。
Whether my kernel/platform/operating system will allow me to do this is a different question. I first want to know if my syntax is correct.
c++ - 変数アドレス
私は統計システムを書いています。指定されたパラメーターで何らかの出力を作成する必要があります。例えば:
ほら、渡されたすべての変数の新しい値で必要な各更新呼び出し。そこで、メモリ内のアドレスを渡すことにしました。しかし今、データはアドレスで構成されています。そこからどのように価値を得ることができますか?できない場合、この問題について何をアドバイスできますか?
c++ - このアドレス (0x00000400) = 1024
私はC++で作業しており、#define VAL 0x00000400
. 定義に等しい変数を設定すると: int value = VAL; デバッガーを実行すると、変数値 = 1024 が表示されます。それがどのように 1024 になるか説明してもらえますか? おそらく、メモリアドレス情報、#define 情報、または関連する何かへのリンクです。
naming - HEXアルファベットの言葉
[0-9a-f]+
のような16 進数のアルファベットから作成できる単語を探していますC0FFEE, DEFACED
We also can use lisoz
, where1=l,i; 5=s; 2=z; 0=o
など.
メモリ アドレッシングまたは IPv6 アドレスで使用できるので、面白くて覚えやすくなります。
ここに素晴らしいリストがあります: http://www.nsftools.com/tips/HexWords.htm しかし、そこにない何かを考え出したり、新しい単語を発明したりできると確信しています:)