有关 placement new,该怎么处理

有关 placement new
正在看primer C++ v3.0 


  8章 关于New的 有个例子,但在我的机器上怎么也编译不了
  #include<new>
  //#include<new.h>

  char *arena =new char[sizeof(AA)];

  AA *ptr=new (arena)AA("aa"); //这一句出错.提示arena 未定义

  ptr->~AA();
  
  AA *ptr=new (arena)AA("bb");


  在类AA文件中也引 #include<new> 这是为什么呢? 还有<new>与<new.h>有什么区别? 谢谢!



------解决方案--------------------
new是标准新定义的,里面的名字放在namespace std中
在include后加上using namespace std;或using std::arena试试
------解决方案--------------------
上面错了,没细看...
C/C++ code

#include <new> 
//#include <new.h> 

class AA
{
};

int main()
{
    char   *arena   =new   char[sizeof(AA)]; 

    AA   *ptr = new(arena) AA(); 
    ptr-> ~AA(); 
    
    ptr=new(arena) AA(); 

    return 0;
}

------解决方案--------------------
不好意识 是#define
------解决方案--------------------

怪不得
char *arena =new char[sizeof(AA)]; 

AA *ptr=new (arena)AA("aa"); //这一句出错.提示arena 未定义 

ptr-> ~AA(); 

AA *ptr=new (arena)AA("bb"); 

看不出哪有错啊
你定义宏的时候最好别和标准的一些名字重了
不然编译必出错
自己取名字
丰衣足食