看看这段代码有没有内存泄露? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061219185953114.html
类方法:  
  function   TAdoHelper.GetDataSet(sqlstr:   string;   params:   TStrings):   TDataSet;  
  var  
      TempQuery:   TAdoQuery;  
  begin  
      TempQuery:=   TAdoQuery.Create(nil);  
      TempQuery.Connection:=   FConnector;  
      TempQuery.Close;  
      TempQuery.SQL.Clear;  
      TempQuery.SQL.Add(sqlstr);  
      TempQuery.Prepared;  
      FillParameters(TempQuery,Params);  
      TempQuery.Open;  
      result:=   TempQuery;  
  end;  
   
  客户端:  
  result:=   MySqlHelper.GetDataSet(SQL_GetUserDataSet);  
   
  这样返回临时对象的引用,函数内部的临时对象tempquery何时释放?如果不释放会不会造成内存泄露?

关注!

如果客户端的result没有free的话,会产生内存泄漏,即分配给tempquery的内存块没有了引用。  
  对于class类型的返回值,建议改成过程,使用变参传入。

function   TAdoHelper.GetDataSet(sqlstr:   string;   params:   TStrings):   TDataSet;  
  begin  
      Result   :=   TAdoQuery.Create(nil);  
      with   Result   do  
      begin  
          Connection:=   FConnector;  
          Close;  
          SQL.Clear;  
          SQL.Add(sqlstr);  
          Prepared;  
            FillParameters(Result,Params);  
          Open;  
      end;  
  end;  
   
  客户端:  
  AdataSet   :=     MySqlHelper.GetDataSet(SQL_GetUserDataSet);  
  ....  
  ADataSet.Free;     //   这样就干净了。。

恩,楼上说的是对的。这样做,应该是可以的。。

看看这段代码有没有内存泄露?相关推荐

  1. ios代码中的内存泄露,内存检测工具leaks 检测不出来

    iphone开发过程中,代码中的内存泄露我们很容易用内存检测工具leaks 检测出来,并一一改之,但有些是因为ios 的缺陷和用法上的错误,leaks 检测工具并不能检测出来,你只会看到大量的内存被使 ...

  2. vs内存泄露检测方法

    方法一. 1.头文件: #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h>  注意  #incl ...

  3. java dispose事件_Android-在 ViewModel 中使用 AutoDispose2 解决 RxJava 的内存泄露问题

    RxJava 的内存泄露问题 runRxLambda 和 runRxLambdaViewModel 只是个扩展函数,可以不用理会,下面两段代码唯一的区别就是第二段增加了 AndroidLifecycl ...

  4. 记一次线上JVM原生系统内存泄露排查

    目录 问题报告 应用概况 初步分析 Java堆内存,MetaSpace等使用情况 Java堆外内存分析 进程原生内存分析(Native Memory) 原生内存详细分析 内存内容分析 引入jemall ...

  5. 彻底搞懂Java内存泄露

    Java内存回收方式 Java判断对象是否可以回收使用的而是可达性分析算法. 在主流的商用程序语言中(Java和C#),都是使用可达性分析算法判断对象是否存活的.这个算法的基本思路就是通过一系列名为& ...

  6. python 单例模式内存泄露_彻底搞懂Java内存泄露

    之前一直在简书写作,第一次发布到SF上来,也是第一次使用SF,后面会尽量同步到SF,更多文章请关注: 简书 编程之乐 转载请注明出处:谢谢! Java内存回收方式 Java判断对象是否可以回收使用的而 ...

  7. JVM内存管理概述与android内存泄露分析

    一.内存划分 将内存划分为六大部分,分别是PC寄存器.JAVA虚拟机栈.JAVA堆.方法区.运行时常量池以及本地方法栈. 1.PC寄存器(线程独有):全称是程序计数寄存器,它记载着每一个线程当前运行的 ...

  8. android中momery检测,Android性能优化第(二)篇---Memory Monitor检测内存泄露

    版权声明:本文为LooperJing原创文章,转载请注明出处! 多练习多写代码.jpg 上篇说了一些性能优化的理论部分,主要是回顾一下,有了理论,小平同志又讲了,实践是检验真理的唯一标准,对于内存泄露 ...

  9. 生产环境Go程序内存泄露,用pprof如何快速定位

    内存泄漏可以在整个系统中以多种形式出现,除了在写代码上的疏忽,忘了关闭该关闭的资源外,更多的时候导致系统发生内存泄露原因可能是设计上决策不对.或者业务逻辑上的疏忽没有考虑到一些边界条件. 比如查数据库 ...

  10. Visual Studio内存泄露检测工具

    使用简介 在写程序的过程中,难免会遇到内存泄露的时候,这个时候如果手工查找内存泄露,不说方法没有通用的,就是真的要自己手工查找也是很耗时间和精力的.诚然,我们可以借助一些工具,而且我们还会惊奇地发现这 ...

最新文章

  1. python 编程实例 1
  2. mysql表jiayi_MySQL Memory存储引擎:优势及性能测试
  3. stm32 PWM输出学习
  4. webflow如何使用_我如何使用Webflow构建辅助项目以帮助设计人员进行连接
  5. 介绍一款python类型检查工具pyright
  6. mysql创建文章表_创建表--文章表article
  7. 转换和编辑的sony的MTS硬盘摄像机格式文件。
  8. 人眼分辨 PPI_扒一扒,PPI、LPI、DPI分辨率三兄弟~
  9. 【LeetCode题解】二叉树的遍历
  10. 使用Kmeans聚类分析对复杂的数据进行分类
  11. 计算机网络研修培训总结,计算机培训工作总结(共10篇).doc
  12. Myeclipse的web项目移植到Eclipse中需要添加的包
  13. Timesten Classic 18.1 建立缓存组
  14. Vue中数组的响应式操作
  15. 联想台式计算机内置网卡,联想台式机有没有无线网卡
  16. Wireshark 用户使用手册 ———— 配置与属性
  17. 头条极速版问答自动化教程
  18. 微信小程序接收后台返回的文件流并打开
  19. python远程监控_Python实现远程端口监控实例
  20. 论以建筑全生命周期管理建设公司大数据平台

热门文章

  1. fish-ui 一套基于vue2的ui组件库
  2. 双向lstm-crf源码的问题和细微修改
  3. 深搜和广搜--原理彼此的优缺点
  4. OneProxy中间件生产使用经验视频分享
  5. Spring中自动装配
  6. 自定义UITabBarController以及UITabBar的分析
  7. multipartfile获取数据_详解SpringMVC使用MultipartFile实现文件的上传
  8. jdbc通过idea连接mysql数据库(代码连接,不是插件),使用上海时区还是报错,使用UTCHAI还是报错
  9. 【转】Nodejs链接Mysql批量添加 insert into
  10. C++——动态内存分配new--delete