1,c++标准提供了一个RAII封装类,用于封装指向对内存的指针,这就使得程序能够自动释放这些内存.
2,auto_ptr重载了指针运算符*和->,因此可以像使用原始指针那样使用auto_ptr对象.
3,auto_ptr类模版可用作封装指针数据成员,由于通过值引用的类对象auto_ptr总会被析构,因此它封装的原始指针总能被释放.
#include <iostream>
#include <cstddef>
#include <memory>
using namespace std;
class A
{
int val;
public:
A(int i):val(i){}
int getVal(){ return val; }
static void* operator new(size_t sz)
{
void* p=::operator new(sz);//****
cout<<"Allocating A on the heap at address"<<p<<endl;
return p;
}
static void operator delete(void* p)
{
cout<<"Deleting A at address"<<p<<endl;
::operator delete(p);
}
};
int main()
{
freopen("main.txt","w",stdout);
auto_ptr<A> pAutoA(new A(3));
cout<<pAutoA->getVal()<<endl;
//虽然没有显式删除原始堆内存,但是在栈反解的时候
//pAutoA的析构函数删除了堆内存.
}
引用
Allocating A on the heap at address0x3e3f80
3
Deleting A at address0x3e3f80
由输出结果可以看出:虽然没有显式删除原始堆内存,但是在栈反解的时候pAutoA的析构函数删除了堆内存.
分享到:
相关推荐
判断三个整数是否能构成一个三角形。请编写Java程序实现该任务,并自定义异常来处理当三个整数不能...(要求:至少处理三种异常,每种异常都要给出异常原因。比如某个数为0,某个数为负数,两数之和不大于第三个数等)
3.处理日志时,需要在每一个try-catch块包含一些处理代码,有时候异常处理的代码比正常执行代码还多,污染正常执行代码。 4.同样类型异常有不同的处理方式,使最终的处理变得复杂。 5.接口抛出异常,破坏封装,打破...
C# 异常处理时建立在四个关键词之上的:try、catch、finally 和 throw。 1、try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。 2、catch:程序通过异常处理程序捕获异常。catch ...
3. 标准 C++异常处理的基本语法和语义 4. 实例剖析 EH 5. C++的 new 和 delete 操作时的异常处理 6. Microsoft 对于的实现版本中的异常处理 7. 部分构造及 placement delete 8. 自动删除,类属 new 和 delete、...
s3c2410 中断异常处理 s3c2410 中断异常处理 s3c2410 中断异常处理
1.熟悉异常处理原理和程序结构; 2.掌握异常处理程序设计技术并能正确应用。 二、实验内容 算术异常ArithmeticException(数组越界ArrayIndexOutOfBoundsException、字符串越界异常StringIndexOutOfBoundsException...
中的异常处理问题显得尤为突出[1-3]。传统上将异常处理包含于正常流程中的方法不仅不能 有效的处理各类异常,同时使得整个系统流程复杂化;而完全的人工参与也使得异常处理过 程效率低下,形式极不规范。所以,工作...
有效处理JAVA异常三原则有效处理JAVA异常三原则有效处理JAVA异常三原则
Java异常处理恶习,这些习惯很多人都范,很少有人注意,但是对系统的开发和使用都可能造成很大的影响,这个文档可以帮助大家改进编程风格
那么,能不能将所有类型的异常处理从各处理过程解耦出来,这样既保证了相关处理过程的功能较单一,也实现了异常信息的统一处理和维护?答案是肯定的。下面将介绍使用Spring MVC统一处理异常的解决和实现过程。
这本电子书详细介绍了如何在Flex中应用异常处理
s3c2410 中断异常处理
2. 两个加数分别输入2和3,...5. 两个加数分别输入123和0,调试并修改程序,尝试用finally处理该异常。 6. 定义一个自己的异常MyException,并在TxtOp1或者TxtOp2为空的时候,抛出该异常。利用catch语句将该异常捕捉。
异常处理是指处理应用程序在编译时或运行时所发生的错误。如果应用程序能够处理异常错误,则在遇到错误时,应用程序会执行“一些动作”作为响应,而不是没有任何响应并且引发该错误的进程在没有提示的情况下发生失败...
Java面向对象程序设计 实验四 异常处理
事故及异常处理规程 感謝您採用台達 DVP-EC3 系列可程式控制器。DVP-EC3 系列目前提供 10 ~ 60 點數的 主機。為了確保能夠正確地安裝及操作可程式控制器,請在裝機之前,詳細閱讀本使用手 冊,並請妥善保存及交由該...
浅淡Win32 系统级异常处理机制,方便为接下来的基于S.E.H机制的攻击做基础.
详细阐述CortexM3异常的分类、优先级、进入和退出,以及在CortexM3异常处理机制中使用的新技术——迟到(latearriving)和尾链(tailchaining);最后,比较CortexM3和ARM7异常控制机制的区别,并量化分析迟到和...
异常处理叶核亚主编,第三版资料建议下载实例资料
该工具类是对Retrofit2+Rxjava2网络请求异常统一封装处理,将onError(Throwable e)中得异常转化成具体的错误信息。除了提示用户以外,还方便开发者准确定位Bug的所在。