考虑代码行:
StringSource( cipher ,
true ,
new PK_DecryptorFilter( rng ,
decrypter ,
new StringSink( plainText ) ) );
过滤器和StringSink
对象是使用new
创建的,现在我很好奇我是否有责任删除这些内容,因为我不确定如何执行此操作因为我需要指向这些对象的指针。
在查看测试项目时,我似乎无法找到删除内容,因此我猜测这些对象会在作业完成后自动删除。
但由于文件可能有误,我认为我确定了。
答案 0 :(得分:2)
答案 1 :(得分:0)
使用new分配的过滤器/ StringSink是否需要删除?
如果您提供的话,答案是否定的。您无需删除它。来自重要使用说明下的Readme.txt
:
- 如果A的构造函数接受指向对象B的指针(除了诸如int和char之类的基本类型),则A拥有B并将删除B 在A的破坏。如果A的构造函数引用了一个 对象B,然后调用者保留B的所有权,不应该 摧毁它直到A不再需要它。
醇>
另请参阅Pipelining上的Crypto ++ wiki页面。它是一个更高层次的设计视角,对象所有权是它的一个细节。
Readme.txt
中列出了第二个重要提示。这是:
- Crypto ++在类级别是线程安全的。这意味着您可以在多线程应用程序中安全地使用Crypto ++,但您必须提供 多个线程访问公共Crypto ++对象时的同步。
醇>