auto_ptr
1255645
这个作者很懒,什么都没留下…
展开
-
正确使用std::auto_ptr http://blog.csdn.net/just_a_beginning/article/details/4386755
1, auto_ptr类 auto_ptr是一个模板类,定义如下: template typename Type> class auto_ptr {...}; 它存储的是一个指向Type的指针。 顾名思义,auto_ptr是一种智能指针,它包含一个动态分配内存的指针,并在它生命周期结束的时候,销毁包含的指针所指向的内存。 例1:转载 2015-10-08 19:57:04 · 359 阅读 · 0 评论 -
auto_ptr浅析 http://www.cnblogs.com/qytan36/archive/2010/06/28/1766555.html
auto_ptr浅析 auto_ptr是C++标准库中()为了解决资源泄漏的问题提供的一个智能指针类模板(注意:这只是一种简单的智能指针) auto_ptr的实现原理其实就是RAII,在构造的时候获取资源,在析构的时候释放资源,并进行相关指针操作的重载,使用起来就像普通的指针。 std::auto_ptr pa(new ClassA); 下面主要分析一下auto_ptr的几个要注意转载 2015-10-08 20:06:40 · 382 阅读 · 0 评论 -
用auto_ptr类模板帮助动态内存管理 http://www.cnblogs.com/lidabo/p/3434855.html
用auto_ptr类模板帮助动态内存管理 动态内存使用最多的是在C++应用程序的代码中。有过编程经验的程序员虽然都知道new操作符的使用一定要与delete匹配,在某些场合仍然可能有内存溢出。当异常被掷出时,程序的正常控制流程被改变,因此导致潜在的内存溢出。例如, void g() //可能掷出 { if (some_condition == false) th转载 2015-10-09 08:07:02 · 485 阅读 · 0 评论 -
auto_ptr http://www.cnblogs.com/jtf-china/archive/2011/06/09/2076792.html
今天忙活了半天,结果发现罪魁祸首在使用了auto_ptr。 auto_ptr本身不含有赋值语义,所以在它赋值给别人(例如传参时),实际发生的是控制权的转移。 1 auto_ptrTYPE> A,B; 2 A = B; 第二行执行完毕后,B的地址为0; 这就是智能指针auto_ptr的缺陷。倘若遇到类似的情况,还是用boost的shared_ptr吧。 另外转载一篇转载 2015-10-10 20:13:32 · 1007 阅读 · 0 评论 -
C++ 智能指针Auto_PTR 分析http://www.cnblogs.com/skyofbitbit/p/3649776.html
C++ 智能指针Auto_PTR 分析 C++的动态内存的分配与释放是个挺折磨人的事情,尤其异常分支复杂时(比如一堆try catch中,各catch里需要做delete 掉相关的堆上分配的内存),极有可能产生内存泄露的情况。C++中提供了智能指针作为可选的解决方案, C++标准库中自带的智能指针是auto_ptr,它在大多数场景下是满足需求的。针对auto_ptr的缺点,b转载 2015-10-10 20:20:40 · 713 阅读 · 0 评论 -
异常处理 续之(堆栈解退、auto_ptr)http://blog.csdn.net/feitianxuxue/article/details/7314079
1.堆栈解退 当抛出了异常,但还没在特定的作用域中被捕获时,函数调用堆栈便被“解退”,并试图在下一个外层try...catch代码中捕获这个异常。解退函数调用堆栈意味着抛出未捕获异常的那个函数将终止,这个函数中的所有局部变量都将销毁,控制会返回到原先调用这个函数的语句。 如果有一个try代码块包含了这条语句,则它就会试图捕获这个异常。如果没有代码块包含这条语句,则堆栈解退再次发生。如果转载 2015-10-11 15:31:12 · 499 阅读 · 0 评论