关于C++指针delete的几个问题……

2013-09-27 10:25:16 +08:00
 ivanlw
1.对于一个类来说
class A
{
int value;
}
我已经知道了实例化的时候A a;和A *a;的区别是使用的时候A.value和A->value的区别,但是好像后者还要最后delete a;一下,是不是就一无是处了?

2.new一个新的指针,然后移动它(比如linked list的操作),最后要删除的时候出错;网上搜的方法是new的时候,同时new一个backup的指针,指向原来那个指针,最后delete这个bakcup的指针,这个方法靠谱吗?
2022 次点击
所在节点    问与答
2 条回复
sgissb1
2013-09-27 10:27:35 +08:00
第一个问题,我觉得你可以忽略掉。要真心了解,还需要了解到更下层的东西。

第二问题完全看不懂,请直接上代码,或者csdn!
yujnln
2013-09-27 10:38:33 +08:00
1. 不是特别理解你想表达的这个问题的意思。
首先,使用的正确的调用方式:
a.value和a->value都是是访问不到的,class默认access是private。
delete一下是因为你直接new了一下,配套使用,不然会造成memory leak。
一个是类的实例A a,而另一个A *a如果是指向这个类型的一个指针,那么它占用的内存是小于这个实例的,但介于目前这个例子只声明了一个int… 具体sizeof一下,2者应该一样大。

2. 一般来说,谁负责new谁负责delete。然,delete之后=0是个好习惯。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/83846

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX