立即注册 登录
VB爱好者乐园(VBGood) 返回首页

admin6677的个人空间 http://blog.vbgood.com/?110914 [收藏] [复制] [分享] [RSS]

日志

看到外国的极速Listview的清空方法,确实很快!

热度 2已有 775 次阅读2012-10-8 09:22 |个人分类:技术类| 快速清空数组, 删除数组

Private Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
Private Declare Function VarPtrArray Lib "msvbvm60.dll" Alias "VarPtr" (Ptr() As Any) As Long
myItems 是Class数组
        CopyMemory ByVal VarPtrArray(myItems), 0&, 4&
        Erase myItems()
1

路过
1

雷人

握手

鲜花

鸡蛋

刚表态过的朋友 (2 人)

发表评论 评论 (9 个评论)

回复 acme_pjz 2012-10-8 13:58
没搞懂,myItems 到底是什么东西?直接Erase不行么?另外小心内存泄漏,我觉得这段代码有点毛病
回复 admin6677 2012-10-8 19:39
acme_pjz: 没搞懂,myItems 到底是什么东西?直接Erase不行么?另外小心内存泄漏,我觉得这段代码有点毛病
你试试,Dim myItems(80000) as Class

Class
里边有属性 Name、Index、Tag、Text、等等。

让后你再用Erase,点击关闭时,看看程序什么时候才完整关闭。我的程序等了好几十秒才关
回复 acme_pjz 2012-10-8 22:51
admin6677: 你试试,Dim myItems(80000) as Class

Class
里边有属性 Name、Index、Tag、Text、等等。

让后你再用Erase,点击关闭时,看看程序什么时候才完整关闭。我的程 ...
我这里瞬间就关闭了啊 莫非你的VB短路了?我写的测试代码:

Option Explicit

Dim f(80000) As Form1

Private Sub Command1_Click()
Erase f
End Sub
回复 admin6677 2012-10-9 00:31
acme_pjz: 我这里瞬间就关闭了啊 莫非你的VB短路了?我写的测试代码:

Option Explicit

Dim f(80000) As Form1

Private Sub Command1_Click()
Erase f
End Sub
忘记说了,要增加数据才行。空记录是很快的!嘻嘻
最好放到 From_Unload里边去
回复 acme_pjz 2012-10-9 10:31
admin6677: 忘记说了,要增加数据才行。空记录是很快的!嘻嘻
最好放到 From_Unload里边去
果然很卡 不过按你贴出来的代码肯定内存泄漏
回复 admin6677 2012-10-9 15:30
acme_pjz: 果然很卡 不过按你贴出来的代码肯定内存泄漏
   暂时没发生泄漏的问题。
回复 acme_pjz 2012-10-9 21:02
admin6677:    暂时没发生泄漏的问题。
不可能,你在IDE里面多试几次,看看内存使用状况
回复 admin6677 2012-10-9 21:50
acme_pjz: 不可能,你在IDE里面多试几次,看看内存使用状况
晕死,内存一直在增加。那要怎么办呢?求救!!!
回复 acme_pjz 2012-10-10 19:41
admin6677: 晕死,内存一直在增加。那要怎么办呢?求救!!!
不知道 如果你的程序只在退出的时候使用这个代码,那倒无所谓,反正系统会帮你释放的

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

文字版|手机版|小黑屋|VBGood  

GMT+8, 2019-9-19 03:50

VB爱好者乐园(VBGood)
返回顶部