易语言 取自定义数据类型的大小

简介: 先说一下易语言的变量储存机制易语言有基本数据类型和复合数据类型两种基本数据类型包括:1. 各种整数 2.各种浮点 3.
先说一下易语言的变量储存机制

易语言有基本数据类型和复合数据类型两种
基本数据类型包括:1. 各种整数 2.各种浮点 3. 逻辑值
他们都是储存在栈上的 大小都是固定的 用不着取

复合类型一般储存在堆上 然后在栈上储存堆上数据的引用
其中有几种比较特殊:字符串 字节集 数组
这两种类型的大小虽然储存在堆上的某个地方
但都有专门的取大小函数 直接调用即可

剩下就是自定义数据类型 比如类或者结构
特别是类 类的数据成员都是私有的
假如你想知道别人写的一个模块里一个类的大小
不可能通过数数据成员的方法得到
那如何取到呢?有人可能提出用“取变量地址”这个函数
可惜的是 “取变量地址”取到的永远是栈上的地址

根据上面所说 栈上地址的内容就是堆上地址
但是易语言没有一个用指针取整数的函数
这就需要用一个系统api:RtlMoveMemory
这个函数跟c语言memcpy的功能一样 但是有了他问题就变得容易的多
声明一个整形变量a  ls是一个自定义的类或者结构
RtlMoveMemory (取变量地址 (a), 取变量地址 (LS), 4)
这样a储存的就是ls在堆区的地址

之后用到一个api:LocalSize
我们都知道堆区内存分配必然用到LocalAlloc/GlobalAlloc
那么也能通过LocalSize取到大小
调试输出 (LocalSize (a))
之后这样输出的就是ls的大小

当然 相同的数据类型 大小肯定是不变的
每次需要的时候不用都取
取一次之后当常数用就好了
相关文章
|
安全 JavaScript Go
Vue中的v-html指令有什么潜在的安全风险?如何防范?
Vue中的v-html指令有什么潜在的安全风险?如何防范?
1560 1
|
机器学习/深度学习 编解码 计算机视觉
Transformer又一城 | Swin-Unet:首个纯Transformer的医学图像分割模型解读
Transformer又一城 | Swin-Unet:首个纯Transformer的医学图像分割模型解读
2821 0
|
6月前
|
缓存 边缘计算 监控
CDN加速原理与配置优化
本文深入解析CDN加速原理与配置优化,涵盖边缘节点、回源机制与缓存策略三大核心。通过域名配置、智能压缩、安全防护及监控分析等环节详解,结合电商大促实战案例,提供提升访问速度、降低源站压力的完整优化方案,助力企业实现高效、安全的内容分发。
229 0
|
数据可视化 关系型数据库 编译器
【C/C++ 单线程性能分析工具 Gprof】 GNU的C/C++ 性能分析工具 Gprof 使用全面指南
【C/C++ 单线程性能分析工具 Gprof】 GNU的C/C++ 性能分析工具 Gprof 使用全面指南
2091 2
|
11月前
|
数据采集 监控 API
淘宝商品详情API接口全解析:从数据采集到商业洞察
淘宝商品详情API用于获取商品信息,如标题、价格、库存、描述、图片等,支持电商数据分析与竞品监控。核心功能包括基础信息、详情描述、图片资源、SKU属性及促销信息获取。使用时需构造请求URL并进行签名验证。
|
12月前
|
人工智能 IDE 程序员
阿里也出手了!灵码AI IDE问世
各位程序员小伙伴们,是不是还在为写代码头秃?别担心,阿里云带着它的通义灵码 AI IDE 来拯救你啦!
4327 3
|
存储 缓存 JavaScript
Vue3实现页面缓存
【10月更文挑战第9天】
943 121
|
人工智能
用ChatGPT/midjourney生成创意营销图片素材,产品图、虚拟主播、终端店铺图
第一步,先预设场景,询问应该包含的关键词范围 假设你是一位世界一流水平的设计师,你想要使用AI绘画工具midjourney帮忙设计一款XXX,列举该场景需要用到的关键词范畴与示例。 第二步,按照推荐的关键词填充内容来输入到midjourney中,生成对应的图片。 按照逗号区隔不同描述词,用谷歌助手翻译成英文描述词,输入到midjourney中。
|
运维 数据安全/隐私保护 网络协议
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项例题(二)
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项例题(二)
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项例题(二)
|
测试技术 数据安全/隐私保护 Python
大麦网抢票攻略:使用Python Selenium实现
大麦网抢票攻略:使用Python Selenium实现