delphi高手突破节选一
作者:admin 日期:2008-06-27
在Object Pascal中,所有对象都被建立在内存的堆空间上,而非栈上,因此构造函数不会如同C++那样被编译器自动调用。构造对象和析构对象都是程序员的职责。
构造对象首先要为对象分配内存,这个步骤在Object Pascal中是由编译器支持完成的--即所谓的"编译器魔法(Compile Magic)",此过程程序员不必参与;接着要初始化对象的数据成员,编译器会负责"清零",但如果有特殊的赋值,可以在构造函数中完成;对象在被析构的时侯需要释放所申请的资源(非对象本身所占用内存),这些工作是析构函数的职责;对象本身所占内存的回收,同样由"编译器魔法"完成。
对象内存的分配及回收
编译器在为对象分配内存时,所提供的支持就是在调用构造函数之前插入这几行汇编代码:
构造对象首先要为对象分配内存,这个步骤在Object Pascal中是由编译器支持完成的--即所谓的"编译器魔法(Compile Magic)",此过程程序员不必参与;接着要初始化对象的数据成员,编译器会负责"清零",但如果有特殊的赋值,可以在构造函数中完成;对象在被析构的时侯需要释放所申请的资源(非对象本身所占用内存),这些工作是析构函数的职责;对象本身所占内存的回收,同样由"编译器魔法"完成。
对象内存的分配及回收
编译器在为对象分配内存时,所提供的支持就是在调用构造函数之前插入这几行汇编代码:
Tags: delphi高手突破







