Object Pascal能不能像C++那样使用"new"操作?-->>(0分)

  • 主题发起人 主题发起人 stanely
  • 开始时间 开始时间
S

stanely

Unregistered / Unconfirmed
GUEST, unregistred user!
c++里面的new操作是在内存堆中分配:
TForm2 *fm=new TForm2(this);

Object Pascal想分配堆内存怎么办呢?
也必须用指针么?
那么对于指向类的指针的初始化,用什么?
用new()还是类的create()?


我是说c++里面的new 操作符产生的变量是分布的堆内存.
如果在c++不部用new,那么产生的变量算是局部变量(如果不是全局变量).

在delphi里面又没有这样的区别呢?
procedure my();
var
fm:tform2;
begin
fm:=form.create(self);
fm.showmodal;
fm.free;
end;
///////
bcb里面是:
void my()
{
TForm2 *fm=new TForm2(this);
fm->ShowModal();
delete fm;
}
bcb里面的fm分配的是堆内存,但是delphi使用的是堆内存还是编译时预定的局部变量区呢?
 
堆内存,建议去看Create方法的源码
 
就是说只要是delphi里面用户创建的局部类,都是堆内存?
 
Delphi 的对象创建都是分配的堆内存而不是栈,Delphi的对象创建都是通过用Constructor
标识定义的构造函数来创建。new不是Delphi保留字,不是Delphi语法的一部分。
New过程只用于分配一块内存块。
实际上Delphi中的类变量都是对象指针。
 
后退
顶部