自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(2)
  • 收藏
  • 关注

原创 shared_ptr内存泄露问题 weak_ptr如何解决这个问题

然后开始析构ap,发现除了ap本身外,还有原来bp指向内存空间的类B实例的成员aptr也指向同样的空间,所以析构ap时,也只是把use_count减1,不会析构他指向的对象(即类A的实例),也自然不会析构A的实例的成员bptr。按照定义顺序相反,bp先析构,发现除了bp本身,还有ap->bptr也指向了那个new出来的B的空间,所以他的析构函数只是把use_count减1,并不会析构其指向的对象(即类B的实例),也自然不会析构类B实例的成员aptr。成员变量指向对方,会造成循环引用,导致内存泄漏。

2024-04-02 19:33:24 414 1

原创 一级指针和二级指针做函数参数的区别

上面说到,在func2内输出的&x和 main中的&b不相等,在退出func2后,形参int* x的内存被释放,如果我们在func2内部改变形参指针x本身的值,也就是改变他的指向,main中实参b的值会不会改变呢?答案是否定的,我们来验证一下。一级指针做函数参数,传入的是原来指针的副本,也就是形参的地址和原来实参地址是不同的,但形参和实参的值(也就是指向的地址一样),所以可以在函数内部改变指向地址所存储的变量。二级指针做函数参数,仍然无法改变指针本身的值,但是可以改变二级指针指向的一级指针的指向。

2023-11-24 16:22:08 89 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除