Delphi参数传递修饰符效率总结

对于string类型

 

const

按地址传递,而不是像默认方式那样只是增加引用计数

 

默认

只是增加引用计数,被修改后才产生本地副本(copy-on-write)

比如

procedure Method1(S: string);
begin
S := S + 'k';
end;
只有在S被修改后副本才会产生,S的地址才会变化

var
按地址传递参数, 同const

结论:
const修饰符会(也只会)优化string和记录类型的参数传递时的内存占用, 对于其它类型,默认方式和const方式都会产生本地副本


string结构:

string变量实际上是其内容的第一个字符的地址,在此地址之前的 12 字节内存中的内容才是字符串内部结构中的头部,分别是 32 位字符串占用的内容空间大小,32 位引用计数,32 位字符串长度


from

http://rainux.org/delphi

你可能感兴趣的:(Delphi)