0

戦略パターンがあり、たとえばゲームのメイン ループで実行したいと考えています。問題は、インスタンスを削除しないとメモリリークが発生することです。また、そのインスタンスを別の場所で使用したいと考えています。戦略パターンでメモリの割り当て/割り当て解除をどのように処理できますか。

CompressionContext *ctx = new CompressionContext();
//we could assume context is already set by preferences
ctx->setCompressionStrategy(new ZipCompressionStrategy());    
//get a list of files
ctx->createArchive(fileList);    
4

1 に答える 1

4

std::shared_ptr<CompressionContextBase>a の代わりにan を使用しCompressionContextBase*ます (つまり、生のポインター)。


編集:これは単なる提案であり、提供した情報に基づいており、より適している可能性unique_ptrがあるなど、異なるセマンティクスを持つ他のスマート ポインターの実装がある可能性があります。@akappaが示唆しているように、より良い決定を下すために、このトピックをさらに読みたいと思うかもしれません.shared_ptr

于 2012-07-27T15:14:18.963 に答える