文档章节

学习 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
深圳
程序员
[短文速读-3] 实例化子类会实例化父类么?

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

MDove
09/11
0
0
阅读《LEARNING HARD C#学习笔记》知识点总结与摘要一

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

技术小牛人
2017/11/15
0
0
Java内存学习(1)

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

储明城
2016/03/11
47
2
C#高效编程话题集1(每期10话题)

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

Matrix4X4
2012/03/03
96
0
C++堆-栈-自由存储区-全局静态存储区和常量存储区-托福答案考前qq5471204-SAT答案

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

goohaozi
2012/02/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

LSM-Tree 大数据索引技术

一、LSM-Tree概述 核心思想就是放弃部分读能力,换取写入能力的最大化。LSM-Tree ,这个概念就是结构化合并树(Log-Structured Merge Tree)的意思,它的核心思路其实非常简单,就是假定内存...

PeakFang-BOK
36分钟前
1
0
vue.js响应式原理解析与实现

从很久之前就已经接触过了angularjs了,当时就已经了解到,angularjs是通过脏检查来实现数据监测以及页面更新渲染。之后,再接触了vue.js,当时也一度很好奇vue.js是如何监测数据更新并且重新...

peakedness丶
42分钟前
1
0
Weblogic补丁升级操作步骤

linux平台: weblogic1036 1:停止weblogic服务 2:打FMJJ补丁 a:获取weblogic_home目录并执行命令:export weblogic_home="/weblogic/wls1036_x64",(此目录一般为目录“user_projects”上...

fang_faye
55分钟前
1
0
04-《Apache Tomcat 9 User Guide》之部署项目

1.Introduction Deployment is the term used for the process of installing a web application (either a 3rd party WAR or your own custom web application) into the Tomcat server. 部......

飞鱼说编程
55分钟前
1
0
一位十年的老码农他眼中的区块链

大家可能已经听说过比特币、莱特币、以太币等等,以及它们作为一种新货币在市场上的潜力。 有趣的是,很多投资比特币的人也提到了区块链之类的东西。 显然,这项技术是比特币等其他东西的"基...

小刀爱编程
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部