我正在使用以下代码读取内存中的地址。我突然想到我这样做的效率可能非常低,因为我正在对每个地址进行单独调用,尽管所有地址都是彼此的邻居(1 个字节)。
[DllImport("kernel32", EntryPoint = "ReadProcessMemory")]
private static extern byte ReadProcessMemoryByte(int Handle, int Address, ref byte Value, int Size, ref int BytesRead);
该函数看起来像:
pseudo:
For loop:
read memory address (base address offset)
add result to array
addressoffset++
所以说我有 3 个地址,我会打 3 个单独的电话。如果您知道我的意思,有没有办法只进行 1 次调用,然后执行内部逻辑将结果分成 3 个单独的数据段?就像不是逐字节读取,而是一次读取 4 个字节,然后在添加到数组之前将它们拆分?
我问这个的原因是我的程序需要很长时间才能完成迭代,有时必须读取多达 40,000 个地址,这需要 3 分钟。如果我能做到我所要求的,那么也许我可以在一分钟内将其缩短?