我是靠谱客的博主 心灵美台灯,最近开发中收集的这篇文章主要介绍VBA,VB 6.0计算数据类型占用内存大小,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

需求背景

 C、C++和.net语言都提供了计算变量内存大小的函数即SizeOf,该函数能正确返回数据类型占用的内存字节数,但是VBA、VB6.0没有直接提供。特别在调用Windows API的时候,该功能显示得特别重要。

实现思路

 VBA、VB6.0虽然没有提供指针运算符,但提供了几个获取变量指针(内存地址)的值的函数。

public function VarPtr(ptr as Any) as longPtr
'获取变量自身的内存地址

public function StrPtr(ptr as Any) as longPtr
'获取字符串值的内存地址

public function ObjPtr(ptr as Any) as longPtr
'获取对象的内存地址

 VBA的内存分布特点,通过分析VBA VB6.0中,一维数组的内存是成线性分布的。

Public Sub main()
    Dim arr(1) As Integer
    Dim brr(1) As Long
    Debug.Print VarPtr(arr(0))
    Debug.Print VarPtr(arr(1))
    Debug.Print VarPtr(brr(0))
    Debug.Print VarPtr(brr(1))
End Sub

在这里插入图片描述
 如果需要计算某一个类型占用内存字节数,则定义一个一维数组即可。

Public Sub main()

    Dim arr(1) As Integer
    Dim brr(1) As Long
    Debug.Print VarPtr(arr(1)) - VarPtr(arr(0))
    Debug.Print VarPtr(brr(1)) - VarPtr(brr(0))
    
End Sub

在这里插入图片描述
 其它数据类型都可以通过这样的方式来计算出内存的大小,这样调用Windows API 就非常方便了。

结束语

 通过这样的方式完美实现SizeOf的功能,如有想深入研究VBA、VB6.0背后机制的童鞋,可以加群:794568082 互相交流。

最后

以上就是心灵美台灯为你收集整理的VBA,VB 6.0计算数据类型占用内存大小的全部内容,希望文章能够帮你解决VBA,VB 6.0计算数据类型占用内存大小所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部