布局new和普通New不同,相当于建立一个小堆空间 。
#include <iostream>
#include <string>
#include <new>
using namespace std;
const int BUF = 512;
class testing
{
private :
string word;
int len;
public:
testing(const string & s = "tesing",int n = 0 )
{
word = s;
len = n;
cout <<word <<"construted"<<endl;
}
~testing()
{
cout << word <<"destroy" <<endl;
}
void show() const
{
cout << word <<"," <<len <<endl;
}
};
int main()
{
char *buffer = new char[BUF];
testing *pc1,*pc2;
pc1 = new( buffer) testing;
pc2 = new testing("heap1" , 20);
cout <<"memory block address :" <<(void *)buffer << "heap1" << pc2<<endl;
cout <<"memory content" << pc1 <<":";
pc1->show();
cout << pc2 <<":";
pc2->show();
testing *p3 , *p4;
p3 = new (buffer + sizeof(testing)) testing("third",3);
delete pc2;
pc1->~testing();
p3->~testing();
delete [] buffer;
return 0;
}