2012-07-27 70 views
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);  
+0

你确定这是C++? – 2012-07-27 15:03:31

+3

你能否解释像“战略模式”这样的术语,而不是假设每个人都知道它是什么,并且对它有相同的理解? – 2012-07-27 15:04:51

+0

@yurikilochek对不起,我修好了。 – 2012-07-27 15:06:55

回答

4

使用std::shared_ptr<CompressionContextBase>代替CompressionContextBase*(即原始指针)。


编辑:这只是一个建议,根据你所提供的信息,有可能是其他智能指针实现与不同的语义,比如例如unique_ptr,其中可能更适合。正如@akappa所建议的,您可能想要更多地阅读该主题,以便做出更好的决定 - 同样,根据问题中的信息,您可能需要一个shared_ptr,但可能需要考虑您省略的其他注意事项。

+0

我不确定他是否明白了什么是重点,但是......无论如何。 – akappa 2012-07-27 15:16:31

+0

@akappa你可以解释一下这是什么意思:) – 2012-07-27 15:17:48

+1

@akappa:那么,这就是为什么我添加了链接到cppreference,在那里你可以阅读这件事。为什么一切都像这样基本一遍又一遍地重复? – bitmask 2012-07-27 15:19:29