lzhenf

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

布局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;
}
posted on 2012-03-23 22:15  lzhenf  阅读(273)  评论(0编辑  收藏  举报