Чтобы глубже изучить, как выделяется и хранится память, Я написал приложение, которое может сканировать адресное пространство памяти, находить значение и записывать новое значение.
Я разработал образец приложения с конечной целью - иметь возможность программно найти мой массив и перезаписать его новым значением. последовательность чисел. В этой ситуации я создал одномерный массив с 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"
Я далеко от базы?