FastMM4 查内存泄露 smartbird 2011-10-8 环境: Delphi 2006、FastMM4 步骤: 1,在 Delphi 工程上右键,选择 View Source(或者选中工程,按快捷键 Ctrl + V) 2,在打开的工程源文件页签的第一个 uses 节中,添加 FastMM4 单元引用 3,在工程上右键,打开 Options 4,在弹出的对话框中,选择Directories/Conditionals 页签,点击Conditional Defines 后的省略号按钮 5,在添加3 个条件编译指令: Fu llDebu gMode LogMemory LeakDetailToFile ClearLogFileOnStartu p 6,再次执行步骤 3, 选择Linker 页签,将 Map file 选项选成 Detailed; 选择Compiler 页签,将 Use debu g DCUs 勾选 和 7,再次执行步骤3,这次选择Packages 页签,将Build w ith runtime packages 选项去掉,不勾选,即通常所说:不带包编译 8,在Form 的OnCreate 事件中,创建一个TStringList,不释放,作为测试
9,运行程序,直接点击关闭,这样 TStringList就泄露了
10,关闭程序后,FastMM4 弹出了内存泄露窗体,对于大型程序来说,这些还不够,因为我们不知道到底哪儿发生了泄露
But Steve Jobs who just left us a moment ago often say: There is one more thing 11,在 exe 同级目录下,还有一个 txt 文件: 12,双击打开,能够看到泄露的内存初始分配时的堆栈: 我们能够看到Unit1
pas 文件中的,第 29 行,