Consider a scenario, where std::string
is used to store a secret. Once it is consumed and is no longer needed, it would be good to cleanse it, i.e overwrit
It is probably safe. But not guaranteed.
However, since C++11
, a std::string
must be implemented as contiguous data so you can safely access its internal array using the address of its first element &secretString[0]
.
if(!secretString.empty()) // avoid UB
{
char* modifiable = &secretString[0];
OpenSSL_cleanse(modifiable, secretString.size());
}