shared_ptr 使用建構解構驗證記憶體回收
#include <iostream>
#include <vector>
#include <memory>
#include <typeinfo>
#include <cxxabi.h>
using namespace std;
class test
{
public:
test()
{
cout << "test()" << endl;
}
~test()
{
cout << "~test()" << endl;
}
};
int main()
{
test *pp = new test();
shared_ptr<test> p(new test());
return 0;
}
#include <iostream>
#include <memory>
class Base
{
public:
virtual void testtest() = 0;
};
class Derived1 : public Base
{
public:
~Derived1() {
std::cout << "~Derived1" << std::endl;
}
void testtest() {
std::cout << "Derived1::testtest()" << std::endl;
}
};
class Derived2 : public Base
{
public:
~Derived2() {
std::cout << "~Derived2" << std::endl;
}
void testtest() {
std::cout << "Derived2::testtest()" << std::endl;
}
};
int main(int argc, char* argv[])
{
std::shared_ptr<Base> b = NULL;
b = std::shared_ptr<Base>(new Derived1());
b->testtest();
b = std::shared_ptr<Base>(new Derived2());
b->testtest();
return 0;
}