auto_ptr类
auto_ptr类
auto_ptr类,主要用于管理动态内存分配。当auto_ptr对象过期时,析构函数将使用delete来释放内存。将new返回的地址赋值给auto_ptr对象时,无须记住还需要释放这些内存。在auto_ptr对象过期时,内存将自动被释放。
使用auto_ptr对象时,必须包含头文件<memory>。该文件包含auto_ptr模板。使用通常的模板句法来实例化所需类型的指针。auto_ptr构造函数是显式的,不存在从指针到auto_ptr对象的隐式类型转换。
1 auto_ptr <double>pd; 2 double *p_reg = new double; 3 pd = p_reg; //不允许 4 pd = auto_ptr<double>(p_reg); //允许 5 auto_ptr<double> pauto = p_reg;//不允许 6 auto_ptr<double>pauto(p_reg);//允许
注意:在使用auto_ptr时,只能配对使用new和delete。只能对new分配的内存使用auto_ptr对象,不能对由new[]分配的或通过声明变量分配的内存使用它。