include <iostream>
classTest {
void*data;
intn;
public:
Test(intm) : n(m) {
data=newint[n];
std::cout<<"Creat Object , Size ="<<n<<std::endl;
}
~Test() {
std::cout<<"delete Object"<<std::endl;
delete []data;//OK, just releases storage, no destructor calls ara necessary
}
};
int main()
{
Test*test_1=newTest(10);
std::cout<<(void*)test_1<<std::endl;
delete test_1;
void*test_2=newTest(12);
std::cout<<(void*)test_2<<std::endl;
delete test_2;//
//Test* t = new(test_2) Test(13);
Test*t=newTest(13);//在delete test_2之后,new一块内存,打印的内存地址和刚才test_2的一样(证明内存释放了)
//但是如果Test类里面有char* p;之类的指针成员,指向了另外的内存,释放工作在析构函数完成,那么,由于上述的detele没有调用析构函数,造成泄露!
std::cout<<(void*)t<<std::endl;
delete t;
}