我写了个队列,系统一直不停的进和出队列,我的内存不断的在涨,我该怎么办呀? TCAQueue = class
private
FQueCount: integer;
FCAQueue: TLinkedQuetp;
procedure Ini_LinkedQue();
public
procedure Push(D: TSendDataRecord);
function Pop(): TSendDataRecord;
constructor create();
destructor Destroy(); override;
property Count: integer read FQueCount;
end;{ TCAQueue }constructor TCAQueue.create;
begin
FQueCount := 0;
Ini_LinkedQue;
end;destructor TCAQueue.Destroy;
var S: pQueueNode;
begin
while FCAQueue.rear <> FCAQueue.front do
begin
S := FCAQueue.front^.next;
FCAQueue.front^.next := S^.next;
if S^.next = nil then FCAQueue.rear := FCAQueue.front;
dispose(S);
S := nil;
Dec(FQueCount);
end;
dispose(FCAQueue.front);
FCAQueue.front := nil;
inherited;
end;procedure TCAQueue.Ini_LinkedQue;
begin
new(FCAQueue.front);
FCAQueue.rear := FCAQueue.front;
FCAQueue.front^.next := nil;
end;function TCAQueue.Pop: TSendDataRecord;
var S: pQueueNode;
begin
if FCAQueue.front = FCAQueue.rear then Result.SendDataLength := 0
else
begin
S := FCAQueue.front^.next;
FCAQueue.front^.next := S^.next;
if S^.next = nil then FCAQueue.rear := FCAQueue.front;
Result := S^.Data;
dispose(S);
S := nil;
Dec(FQueCount);
end;
end;procedure TCAQueue.Push(D: TSendDataRecord);
var P: pQueueNode;
begin
new(P);
p^.Data := D;
P^.next := nil;
FCAQueue.rear^.next := P;
FCAQueue.rear := P;
Inc(FQueCount);
end;
private
FQueCount: integer;
FCAQueue: TLinkedQuetp;
procedure Ini_LinkedQue();
public
procedure Push(D: TSendDataRecord);
function Pop(): TSendDataRecord;
constructor create();
destructor Destroy(); override;
property Count: integer read FQueCount;
end;{ TCAQueue }constructor TCAQueue.create;
begin
FQueCount := 0;
Ini_LinkedQue;
end;destructor TCAQueue.Destroy;
var S: pQueueNode;
begin
while FCAQueue.rear <> FCAQueue.front do
begin
S := FCAQueue.front^.next;
FCAQueue.front^.next := S^.next;
if S^.next = nil then FCAQueue.rear := FCAQueue.front;
dispose(S);
S := nil;
Dec(FQueCount);
end;
dispose(FCAQueue.front);
FCAQueue.front := nil;
inherited;
end;procedure TCAQueue.Ini_LinkedQue;
begin
new(FCAQueue.front);
FCAQueue.rear := FCAQueue.front;
FCAQueue.front^.next := nil;
end;function TCAQueue.Pop: TSendDataRecord;
var S: pQueueNode;
begin
if FCAQueue.front = FCAQueue.rear then Result.SendDataLength := 0
else
begin
S := FCAQueue.front^.next;
FCAQueue.front^.next := S^.next;
if S^.next = nil then FCAQueue.rear := FCAQueue.front;
Result := S^.Data;
dispose(S);
S := nil;
Dec(FQueCount);
end;
end;procedure TCAQueue.Push(D: TSendDataRecord);
var P: pQueueNode;
begin
new(P);
p^.Data := D;
P^.next := nil;
FCAQueue.rear^.next := P;
FCAQueue.rear := P;
Inc(FQueCount);
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货