0

make_shared は単一のメモリ割り当てを動的に行うため、パフォーマンスが向上します。しかし、管理対象オブジェクトと制御ブロックの両方に new を使用して単一のメモリ割り当てを行うにはどうすればよいでしょうか。

4

1 に答える 1

2

make_shared は単一のメモリ割り当てを動的に行います

これは標準では要求されていないことに注意してください。それは可能であり、良い実装はそれを行います。

どうすればそれができますか?

たとえば、アラインメント要件を考慮して、制御ブロックと指定されたオブジェクトの両方を格納するのに十分な大きさの初期化されていないメモリ ブロックを割り当て、配置 newを使用して 2 つのオブジェクトのそれぞれを構築することで実装できます。std::mallocメモリの割り当てに使用できます。std::vector::reserveこれは、後で複数のオブジェクトを構築できるメモリ ブロックを割り当てる方法と似ています。

于 2016-10-12T19:11:58.583 に答える