2013年10月29日
摘要: 对shared_ptr的Copy构造和Copy赋值,会改变引用计数,但是对shared_ptr中原始资源的Copy构造和Copy赋值,不会改变引用计数。因此存在下面的危险情况:1、获取资源时,初始化指针p,然后才用shared_ptr封装资源,这意味着,又可能shared_ptr已经释放了资源,还在使用p,造成未定义行为。这种问题的解决办法就是RAII2、全局变量,取得shared_ptr中的原始资源,又可能shared_ptr已经释放了资源,还在使用全局变量,造成未定义行为。这种问题的解决办法是,全局变量不要获取shared_ptr的原始资源。对于已经存在的接口,需要传递原始资源,是没问题的 阅读全文
posted @ 2013-10-29 20:51 Andy Niu 阅读(619) 评论(0) 推荐(0)
摘要: 对于下面的情况,应该在Heap上分配内存:1、对象比较大(要考虑包含的对象的大小),栈的大小有限,不宜分配很大的对象。2、创建之后,还要在其他地方经常使用,要进行频繁的传递。对象比较大,以及频繁的传递,都会导致Copy代价较大。Copy代价大,为什么不使用引用呢? 引用必须进行初始化(先有真名,再有别名),有些地方可以使用引用,比如方法的形参。有些地方不能使用引用,比如存在关联关系的对象,不能引用另一个对象,只能通过指针。 阅读全文
posted @ 2013-10-29 20:39 Andy Niu 阅读(204) 评论(0) 推荐(0)