zoukankan      html  css  js  c++  java
  • 从函数中返回TstringList对象(摘)

    from:http://delphi.about.com/od/delphitips2008/qt/return_strings.htm

    如果一个函数返回的对象不是我们经常使用的integer,string..而是Tstringlist、Tbutton等object那怎么办呢?

    为什么会有这个问题,因为函数的result是一个object,按照object pascal要求,是需要其owner释放(free)。

    举例:

    function GetStringList: TStringList;
    begin
      result :
    = TStringList.Create;
      result.Add(
    'an item') ;
    end;

    以上面的函数中,是没有释放result的。那会不会造成“leak Memory”呢?

    文中的作者提醒,只要调用后,进行释放就可以了。

    var
      sl : TStringList;
    begin
      sl :
    = GetStringList;//sl指向GetStringList的内存,因此后面释放sl,相当释放了GetstringList函数内部申请的内存。
      try
        ShowMessage(sl[
    0]) ;
        
    // or something like
        
    // ListBox1.Items.Assign(sl) ;
      finally
        sl.Free;
      
    end;
    end;
    结果就是:要使用一个变量进行“参照”,通过变量进行释放
  • 相关阅读:
    悬线法练习
    Codechef MAY 15 Counting on a directed graph
    Codechef MAY 15 Chef and Balanced Strings
    兔子与兔子
    雪花雪花雪花
    约数之和
    分形之城
    递归实现组合型、指数型、排列型 枚举
    最短Hamilton路径
    六十四位整数乘法
  • 原文地址:https://www.cnblogs.com/samsonleung/p/1261607.html
Copyright © 2011-2022 走看看