为了更深入地了解内存如何被分配和存储,我编写了一个应用程序,它可以扫描内存地址空间,查找一个值,并写出一个新的值。
我开发了一个示例应用程序,最终目标是能够以编程方式定位我的数组,并用一个新的数字序列覆盖它。在这种情况下,我创建了一个包含5个元素的单一维度数组,例如:
int[] array = new int[] {8,7,6,5,4};
我运行了我的应用程序,并搜索了上面的五个数字序列。我正在寻找任何在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"
我离谱了吗?
int[] array = new array {8,7,6,5,4};
? - user541686