Это, кажется, месяц шаблонов C++ для меня...
у меня есть SecureString. Взгляды SecureString точно так же, как станд.:: последовательность, кроме него использует пользовательское средство выделения, которое обнуляет на разрушении:
class SecureString
{
public:
typedef std::basic_string< char, std::char_traits, zallocator > SecureStringBase;
typedef zallocator::size_type size_type;
static const size_type npos = static_cast(-1);
....
private:
SecureStringBase m_base;
};
полный код для SecureString может быть найден в http://code.google.com/p/owasp-esapi-cplusplus/source/browse/trunk/esapi/util/SecureString.h; и код для средства выделения может быть найден в http://code.google.com/p/owasp-esapi-cplusplus/source/browse/trunk/esapi/util/zAllocator.h.
В настоящее время, мы имеем , подкачка
определила, который берет станд.:: представить в виде строки как аргумент:
void SecureString::swap(std::string& str)
{
SecureStringBase temp(str.data(), str.size());
m_base.swap(temp);
str = std::string(temp.data(), temp.size());
}
я чувствую, что упускаю возможность в подкачка
, потому что базовые типы только отличаются средствами выделения. Кто-либо может видеть способ избежать временного файла? Действительно ли возможно использовать , снова переплетают
для создания этого выполнения быстрее?
РЕДАКТИРОВАНИЕ: SecureString:: подкачка (станд.:: ул. string&)
теперь не стал. Ссылку на функцию в этом потоке оставили на месте для потомства.
Jeff