3

次のコードを検討してください。

char mem[sizeof(char)];
void* p = mem;
f = new(p) char;

変数 mem のメモリはスタックにあるはずなので、なぜこのメモリの一部が最終的に自動的に収集されないのでしょうか。

4

1 に答える 1

9

メモリは自動的に収集されます。

ただし、デストラクタは自動的には呼び出されません。placement を使用する場合はnew、それを手動のデストラクタ呼び出しと組み合わせる必要があります。デストラクタは自明charなので、これはもちろん問題ではありません。

于 2012-01-17T20:19:54.520 に答える