文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:38
字数 270
阅读 8
收藏 0

码上生花,ECharts 作品展示赛正式启动!>>>

在 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

涂孟超
粉丝 13
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
加载中
请先登录后再评论。
看看Delphi中的列表(List)和泛型

前言 最开始学习数据结构的时候,链表,堆栈,队列,数组,似乎只是一堆概念,随着使用中慢慢接触,其对应的模型,功能,一个个跃到眼前,变成了复杂模型数据处理中的最重要的部分。---By M...

osc_x4h57ch8
2018/04/25
2
0
[转]c++多线程编程之pthread线程深入理解

多线程编程之pthread线程深入理解 Pthread是 POSIX threads 的简称,是POSIX的线程标准。 前几篇博客已经能给你初步的多线程概念。在进一步学习线程同步等多线程核心知识之前,须要对多线程深...

osc_ogi0qclx
2019/09/03
2
0
Delphi TStringList的用法

Delphi TStringList的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的。 TStringList 常用方法与属性: var List: TStringList; i: Integer; begin List := TStrin...

osc_28q3csny
2018/08/24
4
0
delphi try except语句 和 try finally语句用法以及区别

一、异常的来源   什么是异常程序开发过程中,有编译期错误和运行期错误,编译期错误很容易发现,而运行期错误(逻辑错误和异常)往往很难预料.为了程序的稳定性和可靠性,就需要对程序异常处理和...

osc_vy694i16
2019/02/21
5
0
[短文速读-3] 实例化子类会实例化父类么?

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

MDove
2018/09/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

(转)Linux系统:centos7下搭建Rocketmq4.3中间件,配置监控台

原文:https://www.bbsmax.com/A/Ae5RRKe35Q/ 一、环境搭建 环境版本 centos7 jdk1.8 已搭建好 rocketmq4.3 1、下载安装包 网址 https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.3.......

osc_3iv3c4fo
14分钟前
6
0
rocketmq 发送时异常:system busy 和 broker busy 解决方案(2019-06更新)

rocketmq 发送时异常:system busy 和 broker busy 解决方案(2019-06更新) 参考文章: (1)rocketmq 发送时异常:system busy 和 broker busy 解决方案(2019-06更新) (2)https://www.cnb...

osc_e7yhr5of
16分钟前
11
0
Redis雪崩效应以及解决方案

Redis雪崩效应以及解决方案 参考文章: (1)Redis雪崩效应以及解决方案 (2)https://www.cnblogs.com/toov5/p/9895929.html 备忘一下。...

osc_6k3dbwo9
17分钟前
13
0
学习rabbitmq (二) 使用rabbitmq

以为rabbitmq会折腾很久,但没有想到就这么多点内容,主要是服务端的懒得去折腾,比如docker的转移啊,发布啊,部署啥的 今天写了一些代码,用的c#弄的,新建两个项目,一个sender,一个rec...

osc_8hhlaimy
18分钟前
11
0
指定版本拉取

https://blog.csdn.net/csdn_idiot/article/details/106188831 https://blog.csdn.net/bjrxyz/article/details/90347292 chromium(linux环境)指定版本下载和编译教程 csdn_idiot 2020-05-2......

osc_hinb5m98
20分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部