こんにちは私は新しい配置で運動していて、それを使ってオブジェクトを作成しています。次のことを考慮してください。
class PNewTesting
{
private:
string words;
public:
PNewTesting(const string & w = "Placement new testing");
};
PNewTesting::PNewTesting(const string & w)
{
words = w;
cout << words << " constructed" << endl;
}
int main()
{
char * buffer = new char[BUF];
PNewTesting *p1,*p2;
p1 = new (buffer)PNewTesting;
p2 = new PNewTesting("Placing object in heap");
cout << "Memory addresses: " << endl;
cout << "buffer: " << (void *)buffer << endl;
cout << "object placed in buffer: " << p1 << endl;
cout << "object in heap: " << p2 << endl;
}
その部分は私を混乱させています、私が書くときcout << "buffer: " << &buffer << endl;
、これは私に書くときとは異なるアドレスを与えるだろうということですcout << "buffer: " << (void *)buffer << endl;
&buffer
問題は、との違いは何ですか(void*)buffer
、そしてなぜそれらのそれぞれが私に異なるアドレスを与えるのかということです。