学习 TList 类的实现[3] - 不能回避的话题: 内存分配
学习 TList 类的实现[3] - 不能回避的话题: 内存分配
涂孟超 发表于3年前
学习 TList 类的实现[3] - 不能回避的话题: 内存分配
  • 发表于 3年前
  • 阅读 3
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

在 Delphi 中, 几乎所有的类型都有对应的指针类型, 譬如: Char PChar Word PWORD Double PDouble TPoint PPoint 甚至一种类型对应这着几种指针类型, 譬如: Integer PInteger PINT WideChar PWideChar PWChar 即使它没有定义, 我也可以直接使用一个类型的指针, 譬如声明一个整数的指针变量: var px: ^Integer; 也可以先自定义指针类型, 再使用, 譬如: type MyIntPointer = ^Integer; var px: MyIntPointer; 看来声明指针类型还是挺方便, 但使用有点麻烦, 需要先申请内存! 我们可以用以下三种方法, 为指针(譬如是一个 Double 类型的指针)去申请需要的内存:
var
  pd: PDouble;
begin
  New(pd);
  pd^ := 99.9;
  ShowMessage(FloatToStr(pd^)); {99.9}
  Dispose(pd);
end;

 
 
 
 
 

 

 

  
var pd: PDouble; begin GetMem(pd, SizeOf(Double)); pd^ := 99.9; ShowMessage(FloatToStr(pd^)); {99.9} FreeMem(pd); end;
const size = SizeOf(Double); var pd: PDouble; begin pd := AllocMem(size); pd^ := 99.9; ShowMessageFmt('%p -> %g', [pd, pd^]); { 00AD0EC0 -> 99.9 } ReallocMem(pd, 2 * size); ShowMessageFmt('%p -> %g', [pd, pd^]); { 00AF5030 -> 99.9 } pd := ReallocMemory(pd, 100 * size); ShowMessageFmt('%p -> %g', [pd, pd^]); { 00A6B090 -> 99.9 } FreeMem(pd); end;

共有 人打赏支持
粉丝 13
博文 2004
码字总数 14107
×
涂孟超
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: