packed record和record的区别
来源:互联网 发布:java final修饰变量 编辑:程序博客网 时间:2024/05/22 10:37
在windows中内存的分配一次是4个字节的。而packed按字节进行内存的申请和分配,这样速度要慢一些,因为需要额外的时间来进行指针的定位。因此如果不用packed的话,delphi将按一次4个字节的方式申请内存,因此如果一个变量没有4个字节宽的话也要占4个字节!这样就浪费了,你可以用packed关键字取消这种优化。
例子:
type
myrec = packed record
n1 : integer; 4个字节
n2 : shortint; 1个字节
end;
sizeof(myrec)------ 5
type
myrec = record
n1 : integer;
n2 : shortint;
end;
sizeof(myrec)------ 8
Record的数据各个字节都是对齐的,数据格式比较完整,所以这种格式相对packed占用的内存比较大,
但是因为格式比较整齐,所以电脑读取这个类型的数据的时候速度比较快。
而Packed Record对数据进行了压缩,节省了内存空间,当然他的速度也变的慢了。
type
// Declare an unpacked record
TDefaultRecord = Record
name1 : string[4];
floater : single;
name2 : char;
int : Integer;
end;
// Declare a packed record
TPackedRecord = Packed Record
name1 : string[4];
floater : single;
name2 : char;
int : Integer;
end;
var
defaultRec : TDefaultRecord;
packedRec : TPackedRecord;
begin
ShowMessage('Default record size = '+IntToStr(SizeOf(defaultRec)));
ShowMessage('Packed record size = '+IntToStr(SizeOf(packedRec)));
end;
Default record size = 20
Packed record size = 14
不过,对于现在的操作系统来,packed Record 节省的那些空间已不用考虑他了。除了做DLL(不用packed容易造成内存混乱)和做硬件
编程时(比如串口)编程时必须用到packed Record,其它情况都可以用Record
- [Delphi]Packed Record和Record的区别
- [Delphi]Packed Record和Record的区别
- packed record和record的区别
- Record 和Packed Record的区别
- [Delphi]Packed Record和Record的区别
- delphi中Record 和Packed Record的区别
- delphi中Record 和Packed Record的区别
- delphi中Record 和Packed Record的区别
- delphi中Record 和Packed Record的区别
- delphi中Record 和Packed Record的区别
- Record和Packed record
- delphi中Record和Packed Record区别
- Packed Record和Record的不同之处!
- packed record & record 区别 [转]
- packed record与record区别
- record, packed record和变体记录
- Packed record
- Packed Record
- JAVA中JCOM注意
- LOCK
- 拦截器的一个demo
- 动态管理视图(DMV)与动态管理函数(DMF)
- 有关SQL模糊查询
- packed record和record的区别
- 改头换面
- 按钮图标修改
- 转载:ppc网络接连方法
- 加入CSDN
- 事务的用法
- itoa函数及atoi函数
- SQL Server 2005中几个有用的系统存储过程,系统表,系统函数
- 定制 grub splash image