我尝试了一个简单的程序来理解placement new 运算符,
#include<iostream>
#include<string.h>
using namespace std;
int main(){
char *buf = new char[sizeof(string)];
string *p = new (buf) string("hi");
string *q = new string("bye");
buf = (char*)"hello";
cout << "buf :" << &buf << endl;
cout << "p :" << p << endl;
cout << "q :" << q << endl;
cout << "buf :" << buf << endl;
cout << "p :" << *p << endl;
cout << "q :" << *q << endl;
return 0;
}
如何打印buff指向的地址?&buff 将给出指针 buff 的地址,而不是它指向的地址。
我想检查 buff 和 q 是否指向同一个内存位置。
另外,如果我发表评论,buf = (char*)"hello";
buff 给出了不同的地址。请帮忙理解。