使用 new 分配的过滤器/StringSink 是否需要删除?
Does a filter / StringSink allocated with new require a delete?
考虑代码行:
StringSource( cipher ,
true ,
new PK_DecryptorFilter( rng ,
decrypter ,
new StringSink( plainText ) ) );
过滤器和 StringSink
对象是使用 new
创建的,现在我很好奇我是否负责删除它们,因为我不确定我会怎么做,因为我需要指向这些对象的指针。
在查看测试项目时,我似乎找不到删除项,所以我猜这些对象在完成工作后会自动删除。
但是由于文档可能是错误的,我想我会确定一下。
查看那些 类 的 header and source,他们最终都将附件分配给自动处理删除的 member_ptr
。你不应该自己删除它们,让图书馆处理它。
Does a filter / StringSink allocated with new require a delete?
在您提供的情况下,答案是否定的。你不需要删除它。来自 Readme.txt
重要使用说明 下:
- If a constructor for A takes a pointer to an object B (except primitive types such as int and char), then A owns B and will delete B
at A's destruction. If a constructor for A takes a reference to an
object B, then the caller retains ownership of B and should not
destroy it until A no longer needs it.
另请参阅 Pipelining 上的 Crypto++ wiki 页面。它是更高层次的设计视角,对象所有权是其中的一个细节。
Readme.txt
中列出了第二条重要说明。这是:
- Crypto++ is thread safe at the class level. This means you can use Crypto++ safely in a multithreaded application, but you must provide
synchronization when multiple threads access a common Crypto++ object.
考虑代码行:
StringSource( cipher ,
true ,
new PK_DecryptorFilter( rng ,
decrypter ,
new StringSink( plainText ) ) );
过滤器和 StringSink
对象是使用 new
创建的,现在我很好奇我是否负责删除它们,因为我不确定我会怎么做,因为我需要指向这些对象的指针。
在查看测试项目时,我似乎找不到删除项,所以我猜这些对象在完成工作后会自动删除。
但是由于文档可能是错误的,我想我会确定一下。
查看那些 类 的 header and source,他们最终都将附件分配给自动处理删除的 member_ptr
。你不应该自己删除它们,让图书馆处理它。
Does a filter / StringSink allocated with new require a delete?
在您提供的情况下,答案是否定的。你不需要删除它。来自 Readme.txt
重要使用说明 下:
- If a constructor for A takes a pointer to an object B (except primitive types such as int and char), then A owns B and will delete B at A's destruction. If a constructor for A takes a reference to an object B, then the caller retains ownership of B and should not destroy it until A no longer needs it.
另请参阅 Pipelining 上的 Crypto++ wiki 页面。它是更高层次的设计视角,对象所有权是其中的一个细节。
Readme.txt
中列出了第二条重要说明。这是:
- Crypto++ is thread safe at the class level. This means you can use Crypto++ safely in a multithreaded application, but you must provide synchronization when multiple threads access a common Crypto++ object.