随笔分类 -  Delphi-Memory2

摘要:使用TMS MemInsight很简单:在表单上放置一个组件,设置一些属性,然后就可以了。尽管 TMS MemInsight 的组件和 UI 目前基于 VCL,但您已经可以在 Firemonkey、Windows 服务或控制台应用程序或任何其他无头应用程序(例如 TMX XData 服务器)中使用它 阅读全文
posted @ 2022-02-22 22:12 findumars 阅读(0) 评论(0) 推荐(0) 编辑
摘要:Delphi 2009+ 的 System.SysUtils提供了一个类似.Net的StringBuilder,用于存储字符数组。 很多人不明白为什么要用TStringBuilder, Delphi中有string,有几乎所有TStringBuilder的功能函数, System.SysUtils中 阅读全文
posted @ 2019-09-24 17:22 findumars 阅读(404) 评论(0) 推荐(0) 编辑
摘要:@、^、Addr、Pointer Delphi(Pascal)中有几个特殊的符号,如@、^等,弄清楚这些符号的运行,首先要明白Delphi指针的一些基础知识:指针,是一个无符号整数(unsigned int),它是一个以当前系统寻址范围为取值范围的整数。指针对应着一个数据在内存中的地址,得到了指针就 阅读全文
posted @ 2019-02-01 19:11 findumars 阅读(2630) 评论(0) 推荐(0) 编辑
摘要:假设你有一个方法,通过创建临时的List来收集某些数据,并根据这些数据来统计信息,然后销毁这个临时列表。这个方法被经常调用,导致大量内存分配和释放以及增加的内存碎片。此外,所有这些内存管理都需要时间,并且可能会影响性能。 对于这些情况,您可能希望将所有数据保留在堆栈(stack)中,并完全避免内存分 阅读全文
posted @ 2019-01-31 20:17 findumars 阅读(458) 评论(0) 推荐(0) 编辑
摘要:随着即将发布的10.3版本,RAD Studio R&D和PM团队正在制作Delphi在内存管理方面的新方向。 几年前,当Embarcadero开始为Windows以外的平台构建新的Delphi编译器时,就核心语言功能和语言的整体感知而言,有很多讨论新Delphi与当前语言的兼容性。最终出现的决定是 阅读全文
posted @ 2018-10-28 01:15 findumars 阅读(1155) 评论(0) 推荐(0) 编辑
摘要:最近做了一个数据采集服务器, 根据程序的框架,使用了大量的指针结构体(内存块) 操作。 例子: PArrayByte = ^TArrayByte; TArrayByte = packed record ABinding: Pointer; data: TBytes; len: integer; IP 阅读全文
posted @ 2018-01-05 22:07 findumars 阅读(1418) 评论(0) 推荐(0) 编辑
摘要:马上能想到的函数有: 给字符指针(PChar、PWideChar、PAnsiChar)分配内存, 最佳选择是: StrAlloc.StrAlloc 虽然最终也是调用了 GetMem, 但 StrAlloc 会在指针前面添加 Delphi 需要的 4 个管理字节(记录长度).StrAlloc 分配的内 阅读全文
posted @ 2018-01-05 20:56 findumars 阅读(2505) 评论(0) 推荐(0) 编辑
摘要:一、什么是堆、栈? 程序需要的内存空间分为 heap(堆) 和 stack(栈),heap 是自由存储区, stack 是自动存储区,使用 heap 需要手动申请、手动释放, stack 是自动申请、自动释放,使用 heap 时, 如果只申请不释放, 就会发生"内存泄露",不需要申请和释放空间的元素 阅读全文
posted @ 2017-10-21 01:09 findumars 阅读(665) 评论(0) 推荐(0) 编辑
摘要:看了季世平老兄的C++代码后翻译过来的 [delphi] view plain copy unit clipbak; interface uses SysUtils, Classes, Clipbrd, Windows, Contnrs; type TClipData = class Format: 阅读全文
posted @ 2017-07-24 19:54 findumars 阅读(506) 评论(0) 推荐(0) 编辑
摘要:在编程中,动态数组为我们处理数据带来了很大的方便。Windows API函数也为增强程序的功能提供了强有力的保障。当我们在使用这些动态数组及API函数时,常常需要动态分配内存空间,这样动态数组才能被我们使用,API函数才能正确的返回结果。因此,这些函数是必不可少的。 1.AllocMem 功能说明: 阅读全文
posted @ 2017-07-06 18:53 findumars 阅读(428) 评论(0) 推荐(0) 编辑
摘要:一般情况下,我们是用GlobalMemoryStatus 来获取物理内存大小的 但该API在物理内存大小超过2G的时候,返回值均为2GB。因此,没有办法获取真实的物理内存大小,所以需要对此进行改进。 定义TMemoryStatusEx结构: [delphi] view plain copy Type 阅读全文
posted @ 2017-07-04 15:50 findumars 阅读(1291) 评论(0) 推荐(0) 编辑
摘要:关于SetLength报Out of memory的研究及解决办法最近在做一个GIS系统, 在读GIS数据时采用了动态数组,突然读一个数据时SetLength报错!Out of memory仔细研究了代码, 发现代码没有问题。问题应该动态数组的问题。接下来查看各种资料,发现也有一些人发现了类似的问题 阅读全文
posted @ 2017-06-30 16:20 findumars 阅读(469) 评论(0) 推荐(0) 编辑
摘要:当您使用完对象后,您应该及时撤销它,以便把这个对象占用的内存释放出来。您可以通过调用一个注销方法来撤销您的对象,它会释放分配给这个对象的内存。 Delphi的注销方法有两个:Destroy和Free。Delphi建议使用Free,因为它比Destroy更为安全,同时调用Free会生成效率更高的代码。 阅读全文
posted @ 2017-04-14 23:05 findumars 阅读(699) 评论(0) 推荐(0) 编辑
摘要:TObject = class //创建 constructor Create; //释放 procedure Free; //初始化实列 class function InitInstance(Instance: Pointer): TObject; //清除实列 procedure Cleanu 阅读全文
posted @ 2017-04-14 22:34 findumars 阅读(372) 评论(0) 推荐(0) 编辑
摘要:http://blog.csdn.net/akof1314/article/details/6524767 阅读全文
posted @ 2017-04-11 22:07 findumars 阅读(836) 评论(0) 推荐(0) 编辑
摘要:网上有篇文章《Delphi接口编程的两大陷阱》,里面提到接口的生存期管理的问题。但该文章里面提到的两个问题,其实都是对 Delphi 不理解导致的。 先说该篇文章中提到的第一个问题为什么是该文章作者不理解 DELPHI 导致他认为那是不可理解的陷阱。然后俺再来重点解释接口的生命周期管理。 一. 接口 阅读全文
posted @ 2017-03-09 22:33 findumars 阅读(303) 评论(0) 推荐(0) 编辑
摘要:CopyMemory 复制内存,第一个参数为目的地址,第二个参数为源地址,第三个参数为复制数据的大小,单位字节,源内存区域不能重叠,如果重叠,可以使用MoveMemory()函数。函数原型如下: void CopyMemory( PVOID Destination, const VOID * Sou 阅读全文
posted @ 2017-02-28 20:47 findumars 阅读(1860) 评论(0) 推荐(1) 编辑
摘要:原文出处:http://hi.baidu.com/showwindows/blog/item/5b7ac601c487c605728da573.html FastMM 快速MM:-),在D2006和2007中已代替了原来的内存管理器。D7也可以使用,而且很方便哦。请看步骤:1. FastMM是开源项 阅读全文
posted @ 2017-01-21 00:08 findumars 阅读(530) 评论(0) 推荐(0) 编辑
摘要:我们能看到以下代码var pSource,pDest:PChar; len: integer;.......................//一些代码Move(pSource,pDest,len); //错误Move(pSource^,pDest^,len); //正确看起来确实好像是传值,而不是 阅读全文
posted @ 2017-01-20 23:12 findumars 阅读(970) 评论(0) 推荐(0) 编辑
摘要:FastMM是一个替换Embarcadero Delphi Win32应用程序的快速内存管理器,以及可以在多线程下使用,不容易产生内存碎片,并且无需使用外部DLL文件就可以支持共享内存。 使用方法:1.对IDE加速 解压之后,文件夹".../FastMM/Replacement BorlndMM D 阅读全文
posted @ 2016-12-15 01:04 findumars 阅读(2056) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示