プレースメント 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 と q が同じメモリ位置を指しているかどうかを確認したかったのです。
また、コメントすると、buf = (char*)"hello";
buff は別のアドレスを指定しています。理解するのを手伝ってください。