关于C++中的布局new的一个小问题
代码如下:
#include<iostream>
#include<new>
const int BUF=512;
const int N=5;
char buffer[BUF];
int main()
{
using namespace std;
double *pd1,*pd2;
int i;
cout<<"calling new and placement new:\n";
pd1=new double[N];
pd2=new(buffer) double[N];
for(i=0;i<N;i++)
pd2[i]=pd1[i]=1000+20.0*i;
cout<<"buffer addresses:\n"<<" heap: "<<pd1
<<" static: "<< (void *)buffer<<endl;
return 0;
}
问:
代码中最后一句里为什么要用:(void *)buffer 啊?(想输出buffer的地址) 为什么不能直接用buffer?
[解决办法]
因为 buffer 是 char 数组,不加 void* 的话会当作字符串输出的。