关于new和delete的问题(100分)

  • 主题发起人 主题发起人 katy
  • 开始时间 开始时间
K

katy

Unregistered / Unconfirmed
GUEST, unregistred user!
我程序里有一个函数大致如下:(bcb)
TStringList* TMyClass::a(**)
{
TStringList* MyList= new StringList;
*******
return MyList;
}
我在函数内部new了一个TStringList,由于把它作为返回值,所以没有在函数内部delete掉,那我应该在什么地方释放掉这个对象呢?
另外,各位有没有关于指针的好文章或者书籍可以推荐一下,我实在是头大
 
写个TRY..EXCEPT..END释放
 
这还不简单,在函数外声明tstringlist然后作为参数传入函数,在函数中修改该参数内容调用完毕后释放即可
 
那里用了就在那里释放。可以把这个函数理解成一个特殊Tstringlist的构造函数
 
type TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
ClickList: TStrings; { declare the field }
end;

var Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
ClickList := TStringList.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
ClickList.Free; { destroy the list object }
end;
 
这样要内存泄漏的
在函数内部销毁的对象 那么就作为参数引用调用创建的对象
 
谢谢大家的回答:)
 
后退
顶部