0
今日私はポインタの奇妙な初期化を見た。作成時に変数へのポインタをキャスト
struct A
{
void* data;
int bufLen;
...
}
void fun(A* a, int* result)
{
SomeClass* b = new (a->data) SomeClass();
}
それは完全に罰金ですが、それはコンパイルん、それは作業を行いますが、私はなぜ知らない:それはこのようになります。 変数b
の初期化で何が起こっているのか知りたいです。 これはキャストですか?新しいメモリスロットに変数a->data
のコピーがありますか?
これは[placement 'new'](https://isocpp.org/wiki/faq/dtors#placement-new)と呼ばれています。 – Biffen
「[新しいプレースメント]にはどのような用途がありますか?]」(http://stackoverflow.com/questions/222557/what-uses-are-there-for-placement-new) – user463035818
ありがとうございました。 1つの質問:例えば、別のスレッドに情報を渡すために 'SomeClass'変数を使用できますか?できるなら、 'fun'関数でdescrutorを呼び出す必要がありますか? – Astinog