2012-07-27 72 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