Botan :: SecureVector - 构造函数中调用的析构函数?
问题描述:
当在下面的单元测试使用牡丹:: SecureVector:尝试,因为它试图其施工过程中解除分配缓冲器来分配SecureVector当发生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()));
}
段故障。
答
添加一行:
LibraryInitializer botanInit;
工作。
这在我看来是奇怪的行为,所以我想我应该发布它。
您声明一个名为'vbData'的矢量,然后使用一个名为'bbData'的矢量(第一个字母不同)。这可能是错误(是否有一个全球'bbData'?)或仅仅是一个错字? – 2010-05-25 16:06:48
好抓;这是一个错字。 – 2010-05-25 16:09:14
你在这里遇到的是一个错误;它在3月份被发现和修复(但是一个新的稳定版本没有被旋转,所以它仍然在那里)。它只发生在图书馆没有初始化的时候,但是肯定会发生崩溃从来都不是好行为。初始化是必需的,因为SecureVector希望能够访问管理锁定内存的共享池分配器。顺便说一句,我建议如果你遇到与botan有关的进一步问题尝试botan-devel邮件列表 - 那里的人友好,知道图书馆,并且经常可以快速得到答案。 – 2010-06-07 22:26:49