文档章节

学习 TList 类的实现[3] - 不能回避的话题: 内存分配

涂孟超
 涂孟超
发布于 2014/09/26 15:38
字数 270
阅读 6
收藏 0
在 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;

本文转载自:http://www.cnblogs.com/del/archive/2008/03/27/1125533.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
阅读《LEARNING HARD C#学习笔记》知识点总结与摘要一

本人有幸在Learning Hard举行的整点抢书活动《Learninghard C#学习笔记》回馈网友,免费送书5本中免费获得了一本《LEARNING HARD C#学习笔记》,我(梦在旅途)虽然从事.NET开发多年,但一直...

技术小牛人
2017/11/15
0
0
C#高效编程话题集1(每期10话题)

近来在小组C#快速成长团队 讨论了若干话题,有些感觉不错,特总结与大家分享。 当然,所谓话题,重点在于进行讨论,是否是最佳实践也属于大家的个人之见。以下观点若有差错,尽情蹂躏。 1:S...

Matrix4X4
2012/03/03
96
0
[短文速读-3] 实例化子类会实例化父类么?

前言 这是本系列的第三篇文章: [短文速读-2] 重载/重写,动/静态分派? [短文速读-1] a=a+b和a+=b的区别 本篇文章讨论一个很简单的问题:实例化子类是否会实例化父类。 本篇篇幅不长,适合碎...

MDove
09/11
0
0
Java内存学习(1)

java内存管理:对象的分配与释放 1)分配:由程序完成(new个对象,申请空间),堆操作 2)释放:垃圾回收机制执行,简化工作,加重jvm工作,需GC监控 2. java内存泄露 分配对象两个特点:①...

储明城
2016/03/11
47
2
C++堆-栈-自由存储区-全局静态存储区和常量存储区-托福答案考前qq5471204-SAT答案

在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区,托福答案。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变...

goohaozi
2012/02/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring源码学习笔记-1-Resource

打算补下基础,学习下Spring源码,参考书籍是《Spring源码深度解析》,使用版本是Spring 3.2.x,本来想试图用脑图记录的,发现代码部分不好贴,还是作罢,这里只大略记录下想法,不写太细了 ...

zypy333
今天
10
0
RestClientUtil和ConfigRestClientUtil区别说明

RestClientUtil directly executes the DSL defined in the code. ConfigRestClientUtil gets the DSL defined in the configuration file by the DSL name and executes it. RestClientUtil......

bboss
今天
17
0

中国龙-扬科
昨天
2
0
Linux系统设置全局的默认网络代理

更改全局配置文件/etc/profile all_proxy="all_proxy=socks://rahowviahva.ml:80/"ftp_proxy="ftp_proxy=http://rahowviahva.ml:80/"http_proxy="http_proxy=http://rahowviahva.ml:80/"......

临江仙卜算子
昨天
11
0
java框架学习日志-6(bean作用域和自动装配)

本章补充bean的作用域和自动装配 bean作用域 之前提到可以用scope来设置单例模式 <bean id="type" class="cn.dota2.tpye.Type" scope="singleton"></bean> 除此之外还有几种用法 singleton:......

白话
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部