It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center
                            
                        
                    
                
                                7年前关闭。
            
                    
我有一个策略模式,例如想在游戏的主循环中运行它。问题是如果我不删除该实例,将会出现内存泄漏,并且我也想在其他地方使用该实例。如何以策略模式处理内存分配/取消分配。

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);

最佳答案

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



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

关于c++ - 运行时的策略模式? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11690410/

10-11 00:50