本帖最后由 ouo555 于 2014-08-13 16:01:32 编辑

解决方案 »

  1.   

    今天自己想明白了。
    sp<A> spa = new A(); 与  A* a = new A(); 的区别了。sp<A> spa = new A(); 执行的流程是:
    1)  A* a = new A();
    2) sp<A> spa = a;步骤2的精髓在与, sp<A> 是一个模板类, 它存储在区栈, 所以函数结束之后, 它会主动调用析构函数。
    而A* 是一个指针, 它指向的内存分配在堆区, 函数结束之后, 它不会主动调用析构函数。