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

使用 anstd::shared_ptr<CompressionContextBase>而不是 a CompressionContextBase*(即原始指针)。


编辑:这只是一个建议,根据您提供的信息,可能还有其他具有不同语义的智能指针实现,例如 eg unique_ptr,这可能更适合。正如@akappa 所建议的那样,您可能需要更多地阅读该主题,以做出更好的决定——同样,根据问题中的信息,您可能想要一个shared_ptr,但您可能会忽略其他考虑因素。

于 2012-07-27T15:14:18.963 回答