Как массив хранится в памяти?

Чтобы глубже изучить, как выделяется и хранится память, Я написал приложение, которое может сканировать адресное пространство памяти, находить значение и записывать новое значение.

Я разработал образец приложения с конечной целью - иметь возможность программно найти мой массив и перезаписать его новым значением. последовательность чисел. В этой ситуации я создал одномерный массив с 5 элементами, например

int[] array = new int[] {8,7,6,5,4};

Я запустил свое приложение и поискал последовательность из пяти чисел, указанных выше. Я искал любое значение от 4 до 8, всего 5 чисел подряд. К сожалению, мои последовательные числа в массиве совпали с сотнями результатов, поскольку числа с 4 по 8 ни в одной конкретной последовательности не находились рядом друг с другом, в памяти, во многих ситуациях.

Есть ли способ отличить набор чисел в памяти, представляет собой массив, не просто целые числа, стоящие рядом? Есть ли способ узнать, что если я нахожу определенное значение, то соответствующие ему исходящие значения принадлежат массиву?

Я бы предположил, что когда я объявляю int [] array , он указывает на первый адрес моего массива, который предоставит какие-то метаданные для того, что было в массиве, например

 0x123456789 метаданные, 5-32-битные целые числа
0x123456789 + 32 "8"
0x123456789 + 64 "7"
0x123456789 + 96 "6"
0x123456789 + 128 "5"
0x123456789 + 160 "4"

Я далеко от базы?

5
задан George Johnston 17 January 2011 в 17:57
поделиться