Botan内部使用的内存未释放

问题描述

我目前在Botan库(版本2.15)中使用内存问题来解决C ++项目中的加密功能。我的开发环境是solus Linux 4.1(当前内核),但是我也可以在Debian Buster上观察到此问题。

我观察到,超出范围时,Botan内部分配用于计算的某些内存不会被释放。当我多次调用Botan::HashFunctionBotan::StreamCipherBotan::scrypt时,两者之间总是超出范围,因此内存占用量稳定增长。

例如,考虑以下代码

#include <iostream>
#include <vector>

#include "botan/scrypt.h"


void pause() {
    char ch;
    std::cout << "Insert any key to proceed... ";
    std::cin >> ch;
}


std::vector<uint8_t> get_scrypt_passhash(std::string const& password,std::string const& name) {

    std::vector<uint8_t> key (32);
    Botan::scrypt(key.data(),key.size(),password.c_str(),password.length(),salt.c_str(),salt.length(),65536,32,1);

    std::cout << "From function: before closing.\n";
    pause();

    return key;
}


int main(int argc,char *argv[]) {

    std::cout << "Beginning test.\n";
    pause();

    auto pwhashed = get_scrypt_passhash(argv[1],argv[2]);

    std::cout << "Test ended.\n";
    pause();
}

我使用pause()函数来观察内存消耗(我叫top / pmap并在暂停期间观察到KSysGuard),在终止之前从get_scrypt_passhash内部调用时,使用的内存(两者都(由top / pmap和KSysGuard提供)比开始时和终止后大约多2 MB。

我试图深入研究Botan源代码,但是找不到内存泄漏等问题。 Valgrind还输出所有分配的字节已被释放,因此不会发生内存泄漏。 仅供参考,我尝试使用Crypto ++进行相同的功能,而没有观察到这种行为。

有人遇到过同样的问题吗?有办法解决吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)