C++ operator new placement new

2014-11-24 01:38:41 · 作者: · 浏览: 1
一、整体代码
01.cpp
#include  
  
#include   
  
usingnamespace std;  
class Test  
{  
public:  
   Test(int n) : n_(n)  
   {  
       cout<<"Test(int n) : n_(n)"<
n_<~Test(); // 显式调用析构函数,因为没有分配内存,所以直接调用析构函数 return0; }

二、解释
1、 Test* p1 = new Test(100);
delete p1;
结果如下:
void* operator new(size_t size)
Test(int n) : n_(n)
~Test()
void operator delete(void* p)
2、char * str = new char[100];
delete[] str;
结果如下:
global void* operator new[](size_t size)
global void operator delete[](void* p)
3、char chunk[10];
Test* p2 =new (chunk) Test(200);
cout<n_<
p2->~Test()
结果如下:
run
Test(int n) : n_(n)
200
~Test()