文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:38
字数 270
阅读 6
收藏 0
点赞 0
评论 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
博文 2004
码字总数 14107
作品 0
深圳
程序员
阅读《LEARNING HARD C#学习笔记》知识点总结与摘要一

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

技术小牛人 ⋅ 2017/11/15 ⋅ 0

Java内存学习(1)

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

储明城 ⋅ 2016/03/11 ⋅ 2

C#高效编程话题集1(每期10话题)

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

Matrix4X4 ⋅ 2012/03/03 ⋅ 0

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

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

goohaozi ⋅ 2012/02/10 ⋅ 0

HugePage优点缺点大盘点(内含资源分享)

话题 Topic 一起来谈谈HugePage的优点或缺点,各位一线的兄弟们谈谈实战情况,二线的谈谈理论方法吧。(本期话题贡献人:杨建荣) 杨建荣_北京:HugePage是Linux内核上一种使用内存块的方法。...

dbaplus ⋅ 2015/10/14 ⋅ 0

RAII

▲ memory leak 写在前面的话 在google上搜索关键字RAII, 有二百多万条搜索结果。说明这个话题在网上已经被讨论过无数次,也发现了一些好文章给我不少启发,这篇文章主要是做个总结并谈谈自己...

AlgoPeek ⋅ 2017/06/27 ⋅ 0

swift4.0-11 类和结构体

代码学习swift4.0, 类和结构体 // // main.swift // SwiftLearn11-类和结构体 // // Created by iOS on 2018/5/7. // Copyright © 2018年 weiman. All rights reserved. // import Foundat......

小曼Study ⋅ 05/07 ⋅ 0

Netty学习笔记之ByteBuf概览

一、ByteBuf 下图是ByteBuf的继承体系: 1、分类 1)从内存分配角度看,可分为两种: (1)堆内存字节缓冲区:如上图中带有Heap的类,它们的特点是直接在堆中分配内存,分配和回收快,但缺点...

wensenfeng ⋅ 2016/12/24 ⋅ 0

语法基础——C++语法基础

前言 最近发现要学习C++来开发NDK,不得不把基础的东西记录下来,否则学的太多会混淆,废话不多说,开始记录我的C++学习之旅吧 HelloWord 导库 命名空间 输出函数 命名空间 1、命名空间属性访...

qq_30379689 ⋅ 2017/08/31 ⋅ 0

c/c++中内存区域划分大总结

一. 在c中分为这几个存储区 1.代码区- 存放程序的执行代码(机器指令) 2.栈区- 由编译器自动分配释放 3.堆区 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 4.全局区(静态...

最新更新消息 ⋅ 2015/09/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

DevOps 资讯 | PostgreSQL 的时代到来了吗 ?

PostgreSQL是对象-关系型数据库,BSD 许可证。拼读为"post-gress-Q-L"。 作者: Tony Baer 原文: Has the time finally come for PostgreSQL?(有删节) 近30年来 PostgreSQL 无疑是您从未听...

RiboseYim ⋅ 14分钟前 ⋅ 0

Cube、Cuboid 和 Cube Segment

1.Cube (或Data Cube),即数据立方体,是一种常用于数据分析与索引的技术;它可以对原始数据建立多维度索引。通过 Cube 对数据进行分析,可以大大加快数据的查询效率 2.Cuboid 在 Kylin 中特...

无精疯 ⋅ 52分钟前 ⋅ 0

github太慢

1:用浏览器访问 IPAddress.com or http://tool.chinaz.com 使用 IP Lookup 工具获得github.com和github.global.ssl.fastly.net域名的ip地址 2:/etc/hosts文件中添加如下格式(IP最好自己查一...

whoisliang ⋅ 54分钟前 ⋅ 0

非阻塞同步之 CAS

为解决线程安全问题,互斥同步相当于以时间换空间。多线程情况下,只有一个线程可以访问同步代码。这种同步也叫阻塞同步(Blocking Synchronization). 这种同步属于一种悲观并发策略。认为只...

长安一梦 ⋅ 今天 ⋅ 0

云计算的选择悖论如何对待?

人们都希望在工作和生活中有所选择。但心理学家的调查研究表明,在多种选项中进行选择并不一定会使人们更快乐,甚至不会产生更好的决策。心理学家Barry Schwartz称之为“选择悖论”。云计算为...

linux-tao ⋅ 今天 ⋅ 0

Redis 注册为 Windows 服务

Redis 注册为 Windows 服务 redis 注册为 windows 服务相关命令 注册服务 redis-server.exe –service-install redis.windows.conf 删除服务 redis-server –service-uninstall 启动服务 re......

Os_yxguang ⋅ 今天 ⋅ 0

世界那么大,语言那么多,为什么选择Micropython,它的优势在哪?

最近国内MicroPython风靡程序界,是什么原因导致它这么火呢?是因为他功能强大,遵循Mit协议开源么? 错!因为使用它真的是太舒服了!!! Micropython的由来,这得益于Damien George这位伟大...

bodasisiter ⋅ 今天 ⋅ 0

docker 清理总结

杀死所有正在运行的容器 docker kill $(docker ps -a -q) 删除所有已经停止的容器(docker rm没有加-f参数,运行中的容器不会删掉) docker rm $(docker ps -a -q) 删除所有未打 dangling 标...

vvx1024 ⋅ 今天 ⋅ 0

关于学习

以前学车的时候,教练说了这样的一句话:如果一个人坐在车上一直学,一直学,反而不如大家轮流着学。因为一个人一直学,就没有给自己留空间来反思和改进。而轮流着学的时候大家下来之后思考上...

mskk ⋅ 今天 ⋅ 0

压缩工具之gzip-bzip2-xz

win下常见压缩工具:rar zip 7z linux下常见压缩工具:zip gz bz2 xz tar.gz tar.bz2 tar.xz gzip 不支持目录压缩 gzip 1.txt #压缩。执行后1.txt消失,生成1.txt.gz压缩文件 gzip -d 1.txt....

ZHENG-JY ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部