VB中CopyMemory用法
的有关信息介绍如下:两者效果并不一样。在理解之前,你需要知道VB对于字符串的处理方式。string1变量,本质上是一个指针,指向实际的字符串开头位置,这个位置再往前的4个字节是一个long,表示字符串的长度。第一种,ByVal String2,实际效果是把string2的内容直接传递给copymemory(严格的说不是,VB有别的小动作),CopyMemory 的执行效果就是把string1指向的字符串复制5个字符到string2指向的字符串,这种写法在VB里是最正确的。第二种,如果用第二种copymemory的声明,效果就是CopyMemory byval VarPtr(String2),byval VarPtr(String1), 4。这样表面上能复制,实际情况是,VarPtr(String2)获得string2自身的地址而不是string2保存的内容也就是那个指针,然后传给函数,也就是把string1的值强制复制给了string2,执行完之后,string1、2指向同一个位置(因为他们的值一样)。只要别改变string1的字符串内容,以后string2一直等于string1 。但如果你写了这句 string1=“asdf”,每次给字符串赋值时VB都要重新分配内存,这样,string1是个正常的变量,但string2还是指向老地方(那里已经不属于string1了),所以Print string2显示的一般是乱码。另外,每次运行这类内存相关的函数前要保存,一个粗心就导致VB崩了,重打字麻烦O(∩_∩)O~