- ベストアンサー
VC++メモリウィンドウの使い方とは?
- VC++のメモリウィンドウを使用して、double型のポインタのポインタに入っている数値をチェックする方法についてわかりやすく説明します。
- VC++のメモリウィンドウを使って、ポインタに入っている数値の表示内容を解読する方法について教えてください。
- VC++のメモリウィンドウを利用して、double型のポインタのポインタに格納された数値を読み取る方法について簡単に説明します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
malloc が終わった段階で a = 0x00370FF0 だとします。(これは「ウォッチ」機能で確認できますよね) このアドレスをメモリウィンドに入力(コピペ)します。 0x00370FF0 40 10 37 00 a8 10 37 00 10 11 37 00 78 11 37 00 0x00371000 e0 11 37 00 fd fd fd fd ab ab ab ab ab ab ab ab すると、僕の場合こんな感じでした。 さて、double* は、4バイトですので、4バイトずつ区切って、5つ分が double[5] へのポインタです。 つまり、 1つ目 40 10 37 00 より 0x00371040 2つ目 a8 10 37 00 より 0x003710a8 3つ目 10 11 37 00 より 0x00371110 ・・・ って感じですね。 (1バイトごと後ろから読む点は理解されてますよね) では、次にメモリウィンドに 0x00371040 と入力します。 0x00371040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0 3f 0x00371050 00 00 00 00 00 00 00 40 00 00 00 00 00 00 08 40 すると僕の環境ではこうなりました。 さて、double は、8バイトですので、8バイトずつ区切って、5つ分が、それぞれ double の値を格納してます。 つまり、 1つ目 00 00 00 00 00 00 00 00 より 0.0 2つ目 00 00 00 00 00 00 f0 3f より 1.0 3つ目 00 00 00 00 00 00 00 40 より 2.0 ・・・ のようになります。 10進数の浮動小数点を2進法64ビット表現へ 相互変換する点がご存知ないのであれば、補足しますので ご存知かどうか教えてください。 --- つまり、a の値をメモリウィンドに入力。 そこから、4バイトごとアドレスを読み取って その値をメモリウィンドに入力。 そこから、8バイトごとに浮動小数点で読み取る いかがでしょう?