当前位置:编程学习 > VB >>

vb 遍历内存很慢 有什么办法(用ReadProcessMemory反复读内存)

--------------------编程问答-------------------- 一次性全部读取到数组中,然后再循环查找。

你这样消耗了大量的函数调用开销。 --------------------编程问答--------------------
引用 1 楼 caozhy 的回复:
一次性全部读取到数组中,然后再循环查找。

你这样消耗了大量的函数调用开销。

对,你重复的在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 ,  非技术类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,