到目前为止,在为程序中定义的对象分配内存空间时采用的都是“静态存储方式”,在编译时就确定了所占存储空间的大小,而与之相对的动态存储分配技术则可以保证在程序运行过程中按照实际需要申请适量的内存,使用结束后再进行释放。这种在程序运行过程中根据需要可以随时建立或删除的对象称为自由存储对象。建立和删除工作分别由运算符new和delete完成。
用new创建单个对象时,要根据参数调用相应的构造函数;在用new创建对象数组时,会调用默认构造函数;用delete删除对象时,要调用析构函数。
在对自由存储对象调用构造函数和析构函数时要注意,这时的调用是显式进行的,调用顺序取决于new和delete运算符的顺序。这时析构函数的执行顺序不一定与构造函数的执行顺序严格相反,但对象数组中各个元素的构造与析构顺序仍然是相反的。