Placement operator new

// hhtest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <new> 

using namespace std;

const int chunk = 500; 
class Foo { 
public: 
int val(int para) 
{
cout<<para<<endl;
return _val;
Foo() { _val = 0; } 
//private: 
int _val; 
}; 

// 预分配内存 但没有 Foo 对象 
char *buf = new char[ sizeof(Foo) * chunk ];

int main() { 
// 在 buf 中创建一个 Foo 对象 
Foo *pb = new (buf) Foo; 

pb->val(30);


// 在buf中创建另一个Foo对象,观察是否能争取运行,结果可以
Foo *pd=new(buf)Foo;

pb->val(40);

// 检查一个对象是否被放在 buf 中 
//if ( pb->val() == 0 ) 
// cout << "new expression worked!" << endl; 

// 到这里不能再使用 pb 
delete[] buf; 

getchar();
return 0; 

posted on 2010-11-03 17:08  ATAK  阅读(157)  评论(0编辑  收藏  举报

导航