摘要: 构造函数也可能发生内存泄露,考虑如下程序: 1 class A 2 { 3 public: 4 A(int *p) 5 { 6 if(p!=NULL) num=p; 7 else p=new int(0); 8 //do so... 阅读全文
posted @ 2015-11-15 23:56 xcw0754 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 1. 要求对象分配在堆上 临时对象一般是存在于栈中的,或者是静态对象存在于常量存储区的。那么当创建一个这样的对象的时候,一般是需要隐式或显式地调用构造函数,在销毁的时候调用析构函数的。可以从这方面入手,去限制构造或析构一个对象,从而达到禁止的效果。很明显,我们可以将构造/析构函数设为priva... 阅读全文
posted @ 2015-11-15 13:50 xcw0754 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 条款10 防止构造函数里的资源泄露条款20 协助编译器实现返回值优化条款22 考虑使用op=来取代单独的op运算符条款26 限制类对象的个数条款27 要求或禁止对象分配在堆上 阅读全文
posted @ 2015-11-15 13:49 xcw0754 阅读(122) 评论(0) 推荐(0) 编辑
摘要: setjmp与longjmp是属于C语言中的,当然,C++也会有这两个函数了。他们的原型如下:int setjmp( jmp_buf env );作用:第一次调佣时,将寄存器的当前状态信息全部存入到env中,并返回0。如果在某处调用了longjmp(env,x),且x!=0,则setjmp的返回值将... 阅读全文
posted @ 2015-11-15 09:26 xcw0754 阅读(308) 评论(0) 推荐(0) 编辑