- 博客(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关注的人