メモリがどのように割り当てられ格納されるかを詳しく調べるために、メモリアドレス空間をスキャンし、値を見つけて新しい値を書き出すアプリケーションを作成しました。アレイはどのようにメモリに格納されていますか?
最終的な目標を持つサンプルアプリケーションを開発しました。これは、プログラムで配列を特定し、新しい配列のシーケンスで上書きすることができるようにしました。この状況では、5つの要素、たとえば
int[] array = new int[] {8,7,6,5,4};
私はアプリケーションを実行し、上記の5つの数字のシーケンスを検索しました。私は4と8の間の値を探していたので、合計で5つの数字が並んでいました。残念ながら、配列内の私の連続した数字は、数字の4から8までの何百もの結果と一致しました。特定のシーケンスがメモリ内で隣り合わせに起こることはありませんでした。
メモリ内の数字のセットは、配列を表していて、単に隣り合っている整数ではなく、区別するための方法はありますか?特定の値を見つけたら、それが配列のそれであることを知る方法はありますか?
int[] array
を宣言すると、配列に存在するものにある種のメタデータを提供する、私の配列の最初のアドレスを指していると思います。
0x123456789 meta-data, 5 - 32 bit integers 0x123456789 + 32 "8" 0x123456789 + 64 "7" 0x123456789 + 96 "6" 0x123456789 + 128 "5" 0x123456789 + 160 "4"
アム私は道オフベース?
Huh? 'int [] array =新しい配列{8,7,6,5,4};'? – Mehrdad
@Lambert oops!一定。 :) –