V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ivanlw
V2EX  ›  问与答

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

  •  
  •   ivanlw · 2013-09-27 10:25:16 +08:00 · 2017 次点击
    这是一个创建于 3886 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1.对于一个类来说
    class A
    {
    int value;
    }
    我已经知道了实例化的时候A a;和A *a;的区别是使用的时候A.value和A->value的区别,但是好像后者还要最后delete a;一下,是不是就一无是处了?

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

    第二问题完全看不懂,请直接上代码,或者csdn!
    yujnln
        2
    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是个好习惯。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2319 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:08 · PVG 18:08 · LAX 03:08 · JFK 06:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.