new 函数的定义是怎样的?函数应该如何传递阿?(50分)

  • 主题发起人 主题发起人 fbyang
  • 开始时间 开始时间
F

fbyang

Unregistered / Unconfirmed
GUEST, unregistred user!
我想检测一下我程序中的错误,希望new一次递增变量,dispose递减变量。现在不想大量修改程序,希望通过定义自己的new,dispose实现,但是这个函数原型是怎样的阿,我使用
procedure mynew(var p:pointer) ;不行啊。
 
我的new的理解是分配个内存地址
 
那个好像不是定义的函数。 这样做肯定不行。
你可以:
Ta=class
private
icount:integer;
public
procedure mynew(var p:pointer) ;
end;
procedure mynew(var p:pointer) ;
begin
new(p);
Inc(iCount);
end;
dispose的通理。。
 
New需要给他传递的Pointer指针是有类型的,比如
PInteger
PWord
PByte
等,这些指针编译器都知道实际大小,可以用New分配。而当你需要分配一个不知道实际大小的指针的内存的时候,不能用New函数,只能用GetMem和FreeMem,方法如下
var
P: Pointer;
begin
P := GetMem(4);
PInteger(P)^ := 256;
ShowMessage(IntToStr(PInteger(P)^));
FreeMem(P);
end;
 
我用来分派指针的地址:
Var
P: ^String;
Begin
New(P);
P^ := 'dddd';
.....Data := P;
End;
有New就要Dispose哦
 
后退
顶部