自Delphi 2006以来的所有Delphi版本都有一个更新的内存管理器,该管理器速度更快,功能更丰富。
“新”内存管理器最出色的功能之一是允许应用程序注册(和注销)预期内存泄漏,并在程序关闭时报告意外内存泄漏。
使用Delphi创建WIN32应用程序时,必须确保释放动态创建的所有对象(内存)。
当程序无法释放所消耗的内存时,就会发生内存(或资源)泄漏。
默认情况下,内存泄漏检测和报告设置为false。要启用它,需要将全局变量ReportMemoryLeaksOnShutdown设置为TRUE。
当应用程序关闭时,如果出现意外内存泄漏,应用程序将显示“意外内存泄漏”对话框。
ReportMemoryLeaksOnShutdown的最佳位置是程序的源代码(dpr)文件。
begin ReportMemoryLeaksOnShutdown := DebugHook <> 0; //source "by" Delphi Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TMainForm, MainForm) ; Application.Run; end.注意:上面使用了一个全局变量DebugHook,以确保应用程序在调试模式下运行时显示内存泄漏-当您从DelphiIDE安装F9时。
将ReportMemoryLeaksOnShutdown设置为TRUE后,在主窗体的OnCreate事件处理程序中添加以下代码。
var sl : TStringList; begin sl := TStringList.Create; sl.Add('Memory leak!') ; end;在调试模式下运行应用程序,退出应用程序-您应该会看到内存泄漏对话框。
注意:如果您正在寻找一个工具来捕获您的Delphi应用程序错误,例如内存损坏、内存泄漏、内存分配错误、变量初始化错误、变量定义冲突、指针错误。。。看看马德普和尤里卡洛格
你在Mac上安装的应用程序可能会遇到各种各样的问题。一个应用程序可能拒绝打开一个特定的文件,在工作过程中崩溃或挂起,或者更糟的是——启动时崩溃。任何不稳定的行为,妨碍使用你的Mac电脑的能力是令人沮丧的。 ...
...静态和动态记忆。假设一个语句,比如int a;int数组[10];程序员已经知道这些变量需要多少内存。这个内存是静态内存。有时很难确定存储数据需要多少内存。因此,应该在运行时确定内存。这种存储器是动态存储器。在这些情...
使用声音和动画等多媒体文件的游戏和其他类型的应用程序必须随应用程序一起分发额外的多媒体文件,或者将文件嵌入可执行文件中。 您可以将原始数据作为资源添加到应用程序中,而不是分发单独的文件供应用程序使用...
简而言之,Delphi项目只是组成由Delphi创建的应用程序的文件集合。DPR是用于Delphi项目文件格式的文件扩展名,用于存储与项目相关的所有文件。这包括其他Delphi文件类型,如表单文件(DFM)和单元源文件(.PASs)。 由于Delphi...
如果您打算成为一名优秀的Delphi程序员,那么“接口”、“实现”和“使用”等词需要在您的编程知识中占有特殊的位置。 德尔福项目 当我们创建一个Delphi应用程序时,我们可以从一个空白项目、一个现有项目或Delphi的一...
...图标吗?这个地方叫做Windows系统托盘。您想将Delphi应用程序的图标放在那里吗?您希望该图标设置动画还是反映应用程序的状态? 这对于长时间运行而没有用户交互的程序(通常整天都在电脑上运行的后台任务)非常有用。 ...
为您的下一个Delphi应用程序寻找单文件、单用户数据库?需要存储一些特定于应用程序的数据,但不想使用注册表/INI/或其他什么? Delphi提供了一个本地解决方案:TClientDataSet组件——位于组件调色板的“数据访问”选项卡上...
01 2006年 windows对程序的内存使用有何看法? 请看Windows任务管理器的屏幕截图。。。 最右边的两列表示CPU(时间)使用情况和内存使用情况。如果某个进程严重影响其中任何一个,则系统将减速。 经常影响CPU使用率的...
...在:这个堆栈是什么?为什么会出现溢出? delphi应用程序中的内存 当您开始在Delphi中编程时,您可能会遇到类似上面的错误,您可以解决它并继续前进。这与内存分配有关。大多数情况下,只要释放所创建的内容,您就不会...
...来移动表单。 例如,考虑一个没有标题栏的Windows应用程序的情况,我们怎样才能移动这样的窗口呢?事实上,创建带有非标准标题栏甚至非矩形窗体的窗口是可能的。在这种情况下,Windows如何知道窗口的边框和角在哪里? ...