Delphi内存对齐

本文环境Delphi XE 10.2  

我们知道在Delphi中,全局变量存储在应用程序数据段中,其生命周期直至整个应用进程终止;局部变量存储在应用程序栈中,其生命周期直至当前声明的函数方法返回;以GetMem,New等方法动态申请的内存由堆分配,其生命周期直至以FreeMem或Dispose方法销毁;长字符串(Long string), 宽字符串(wide string), 动态数组(dynamic array), 变体(variant),和接口(interface)的存储内存也是堆分配的, 但他们的内存管理是自动的(编译器自动插入引用计数相关代码); 对象(TObject)的存储内存通过构造函数由堆分配的,通过析构函数销毁。

Delphi高版本自带的内存管理器实现了堆分配的内存地址对齐。在Win32平台上,内存管理器分配的内存块起始地址默认对齐于8字节,也可以通过System.SetMinimumBlockAlignment设置对齐类型为16字节来提高访问性能。在Win64平台上,内存管理器分配的内存块起始地址对齐于16字节。

编译器的基础对齐支持:
1,静态数据(全局变量和typed常量)

按其类型对齐参数对齐以优化访问。

2,栈数据(局部变量)

编译器不保证对齐.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值