vb 遍历内存很慢 有什么办法(用ReadProcessMemory反复读内存)
--------------------编程问答-------------------- 一次性全部读取到数组中,然后再循环查找。你这样消耗了大量的函数调用开销。 --------------------编程问答--------------------
对,你重复的在For循环中调用ReadProcessMemory hProcess是花时间的。 --------------------编程问答-------------------- 汗,这和VB快慢有啥关系,只是你读内存的算法问题罢了。你通过ReadProcessMemory 实现的话,一次读个N兆字节到数组比较合适吧。 --------------------编程问答-------------------- A)成块读取
B)用 KMP 之类的算法进行查找 --------------------编程问答-------------------- 求例子?????? --------------------编程问答-------------------- ..........
For i = "&H" & 0000000 To "&H" & FFFFFF
ReadProcessMemory hProcess, i, ByVal adrValue, 10, 0&
Next
一个程序的内存,100%的情况下都不会出现 i = "&H" & 0000000 To "&H" & FFFFFF
这个地址范围内都被占用
程序占用的内存,是用堆的概念实现的
可以理解成一个树形控件那样的结构
进程就是顶级节点,次级节点是所有的内存堆
不同的内存堆存有不同意义的数据,有些是存储代码的,有些是存资源的还有些就是存用户数据的
so。。。
你应该找一些任务管理器的代码,枚举进程内所有内存堆,分析各个堆的意义
找那些可能存储相应数据的内存范围再搜,范围小了,速度自然就上来了,不要先迷信所谓的算法
补充:VB , 非技术类