比如 这样 我调用aa后 我用ce看进程的内存地址里面就 拥有 "我是测试的" 这个字符
要怎么才能彻底释放掉这个字符呀 让内存所以地址里面不拥有这个字符
sub aa()
dim 变量=""
变量="我是测试的"
这里使用完成了准备释放
变量="
aaa = vbNullString
aaa = Nothing
End Sub
Sub aa()
Dim testChars = "我是来测试的"
For i = 0 To 10
GC.Collect()
Next
End Sub
我这样写的 还是没有释放掉用ce搜索 我是 还是能清楚的看到 我是来测试的 字符串
这里你的testChars是不会被释放的,因为这个变量生命周期还没过呢。testChars在aa()中有效,aa还没有执行完毕,这个变量怎么会被释放呢?
追问我在main 入口里面调用的 aa函数
Main()
aa() '我在这里调用的 aa子程序
'这里还调用了其他函数
MsgBox(1)'这里弹窗' 表示aa() 已经调用完成了呀 然后我在用ce搜索进程 一样能找到aa里面的变量字符
End Sub
求大佬给一个例子嘛 呜呜 跪谢
你说的ce是那个cheat engine修改器?如果是这个的话,那我重新解释一下。
某个地址内存被你的程序释放了,代表这这个地址的内存已经标记为未使用,可以被其它变量使用了,GC回收的过程其实就是这个标记的过程(栈和堆的操作方式不一样,本问题中的是字符串,是堆操作。),并不是橡皮擦一样的抹掉里面值的过程。当有新的变量使用该地址的时候,这里面的值才会被覆盖掉。.net并不鼓励直接对地址进行操作,如果你非得要将该地址上的值手动抹去,需要使用unsafe代码,用指针操作。