2012-02-25 5 views
0

私はVC2010を使用しており、デバッグと書き込み中に同じデータが異なって表現されていることがわかります。例えば :37487840ca673239dc72f9eeb746947aは、私が最初の表現が、第2 1が代わりに最初の一つのファイルに書き込まれますが欲しいデバッグ中にウォッチの値列の0x0022f844が何を表していますか?

0x0022f844 "37487840ca673239dc72f9eeb746947a" unsigned char [33] 

0x0022f670 "48598840ca673239dc72f9eeb746947a" unsigned char [33] 

として表現されます。

EDIT:

第一及び第二の一方が第1のちょうどコピーであるので、第二の値が同じである必要があります。実際には、最初の値を関数に引数として渡し、2番目の値はこの関数で何かが行われる前にそれを表します。

+0

どのようにコピーしますか? 'strxxx'関数または何を使用していますか?それがおそらくあなたのデータを破壊しています。 – Ajay

答えて

1

0x0022f844は、16進数の例です。これは、アドレスの表示に使用される形式(デフォルト)です。その値は、実行ごとに異なります。これは、値が存在するメモリ領域のアドレスの「人間が理解できる」表現です。それをファイルに入れるのは無駄です。代わりにあなたの価値を保管してください。

+0

私は "アドレス"ではない値だけを書きます。問題は、値の2番目の形式(同じ値の場合)がファイルに書き込まれる – John

+0

申し訳ありませんが、私はあなたの質問に誤解しました。 2つの値が同じであると考えるのは難しいです。その場合、MSにバグレポートを提出する必要があります。 – CapelliC

1

左側の列の値は、アレイのアドレスです。配列は固定サイズなので、Visual Studioではすべての要素が値の列に表示されます。

ここには2つの異なるアドレスがあり、したがって2つの異なる値が表示されます。

1

最初の部分(0x...)は、見ている変数のアドレスです。以下は、そのアドレスにあるメモリの内容のプリントアウトです。

あなたが見ている2番目の変数/メモリ領域は、 "37487"の表現ではありません。別の値が含まれています。

関連する問題