程序设计时应用动态存储分配技术可以减少应用程序数据存储的开销。VB在编程中提供了动态数组功能,可以根据数据的多少随时调整数组的大小,达到提高内存使用效率的目的。但是动态数组有一个缺陷,那就是当调整数组大小时数组中原有的所有数据都被清除,当使用关键字Preserve要求保留数组中原有的数据时,只能调整多维数组中最后一维下标的上界。另外,当用数组存储大量数据时,在数组上的数据操作效率较低。那末,是否可以在VB中实现VC编程中的动态存储功能呢?答案是肯定的,本文将讨论如何在VB编程中实现链式存储技术。
一、VB中的指针 VB中提供对象类型变量以及对象类型变量对于对象的引用功能。这种功能使得一个对象变量可以引用与之属于同一类的对象。例如:
Dim fp As form Set fp=form1 |
第一条语句声明了一个窗体类型对象变量fp,第二条语句使窗体类型变量引用一个窗体实例form1。
语句:
Dim pointer As Object Dim instance As New student Set pointer=instance |
上述语句的执行结果是使类型为Object的对象变量引用类型为student的对象实例instance。在VB中,类型为Object的对象变量可以引用任何类型对象实例。另外,在VB编程中多个对象变量可以引用一个对象实例。对象变量引用需要占用与引用相关的内存和系统资源。当程序不需要该引用时,应该及时释放引用所占用的内存和系统资源。在VB中是通过把对象变量设置为Nothing来释放资源的。当多个对象变量引用同一个对象实例时,只有在所有对象变量都设置为后,与变量所引用的对象相关联的内存和系 Nothing统资源才被释放。
实际上对象变量引用就是一种动态存储方法,我们可以把对象变量视作指针变量,用New建立一个对象实例看作是申请获得一块存储某种类型的对象实例所需的内存区域。