调用栈 |
尚未結案
|
zzmbeyond01
中階會員 ![]() ![]() ![]() 發表:98 回覆:167 積分:53 註冊:2003-09-07 發送簡訊給我 |
各位大大:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; TMyNode = class(TPersistent) private i:string; public ParentNodes, SubNodes: array[0..2] of TMyNode; constructor Create; destructor Destroy; override; end; var Form1: TForm1; mynode: TMyNode; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin mynode := TMyNode.Create; mynodes[0] := TMynode.Create; mynode.SubNodes[0] := TMyNode.Create; end; procedure TForm1.Button2Click(Sender: TObject); begin freeandnil(mynode); end; { TMyNode } constructor TMyNode.Create; begin i:='create'; end; 调用栈是什么,会不会发生重复释放的问题,如何表达更清楚? 怎么能看到对象释放的过程,以及那些对象没有被释放掉? destructor TMyNode.Destroy; var i: integer; begin for i := 0 to 2 do begin if assigned(ParentNodes[i]) then FreeAndNil(ParentNodes[i]); if assigned(SubNodes[i]) then FreeAndNil(SubNodes[i]); end; inherited; end; end.發表人 - zzmbeyond01 於 2004/12/09 00:14:04 |
pcboy
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
|
zzmbeyond01
中階會員 ![]() ![]() ![]() 發表:98 回覆:167 積分:53 註冊:2003-09-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |