DELPHI中不同类型的动态数组变量共享内存

本文介绍了如何在DELPHI中实现不同类型的动态数组共享内存,避免转换过程中的额外内存开销。通过分析动态数组的三要素——内存首地址、长度和元素大小,揭示了如何将STRING转换为TBYTES并保持两者共享内存。文中提供了一个示例函数和代码片段,展示如何在不分配新内存的情况下进行类型转换。
摘要由CSDN通过智能技术生成


场景: 假如我们要调用A函数 procedure A( aBytes:Tbytes).

你手上现在只有一个STRING, 或者其他数组类型,比如Array of char. array of integer..一般的过程就是,首先把你手上的数组类型转换成符合A调用的需要的类型TBYTES,,其实很多时候我们需要要这个TBYTES纯粹是为了得到一个A函数运行的结果,BYTES其实并没有什么用,只是一个中间数据。但是有没有想过,转换的过程其实需要内存开销的,内存要分配,数据要复制,最后销毁。能不能把不同类型的数组共享在一块内存上。比如STRING,既可以当TBYTES用,也可以当 比如ARRAY OF INTEGER. 答案是肯定的。

玩法基础分析:一个动态数组的三要素,内存首地址,长度,元素大小。

内存首地址:简单,内存地址是可以相互贴的(贴就是指针共同指向一个地方)。直接赋值就行。

var  Abytes:Tbytes; aIntegers: array of integer;

贴: Abytes:=Pointer(aIntegers);

 元素大小:简单, SIZEOF(BYTE),sizeof(ineteger);

剩下就是长度在哪里?

长度:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值