C++ Botan::SecureVector-构造函数中调用了析构函数?

C++ Botan::SecureVector-构造函数中调用了析构函数?,c++,botan,C++,Botan,在以下单元测试中使用Botan::SecureVector时: void UnitTest() { std::vector<byte> vbData; vbData.push_back(0x04); vbData.push_back(0x04); vbData.push_back(0x04); Botan::SecureVector<Botan::byte> svData(&vbData[0], vbData.size()

在以下单元测试中使用Botan::SecureVector时:

void UnitTest()
{
    std::vector<byte> vbData;
    vbData.push_back(0x04);
    vbData.push_back(0x04);
    vbData.push_back(0x04);

    Botan::SecureVector<Botan::byte> svData(&vbData[0], vbData.size());
    CPPUNIT_ASSERT(vbData == std::vector<byte>(svData.begin(), svData.end()));
}
void UnitTest()
{
std::矢量数据;
vbData.push_back(0x04);
vbData.push_back(0x04);
vbData.push_back(0x04);
Botan::SecureVector svData(&vbData[0],vbData.size());
cppunitu断言(vbData==std::vector(svData.begin(),svData.end());
}
尝试分配SecureVector时发生分段错误,因为它在构造缓冲区时尝试释放缓冲区。

添加行:

LibraryInitializer botanInit;
发挥作用


在我看来,这似乎是一种奇怪的行为,所以我想我应该发布它。

您声明一个名为
vbData
的向量,然后使用一个名为
bbData
的向量(第一个字母不同)。这是潜在的错误(是否存在全局
bbData
?)还是仅仅是一个输入错误?您在这里遇到的是一个bug;它在三月份被发现并修复(但新的稳定版本尚未推出,所以它仍然存在)。它只在库未初始化时发生,但崩溃绝对不是好行为。初始化是必要的,因为SecureVector希望能够访问管理锁定内存的共享池分配器。顺便说一句,如果你在botan遇到进一步的问题,我可以建议你试试botan-devel邮件列表吗?那里的人很友好,知道图书馆,通常你可以很快得到答案。@Jack Lloyd-非常感谢;我已经在名单上签名了。