◇ prevector_sとは?
prevectorに::mlock, ::mprotect, Secure ZeroMemoryを加えたセキュア版となります。prevectorと同じように扱えるように調整しております。
※ メモリロックを解除するのに作用が必要となりますのでメソッド経由となります。
prevector_s<28, uint8_t> buffer;
buffer.resize(16);
::memcpy(&buffer[0], data, 16); // Error (Memory No Access)
auto mi = buffer.at(0);
::memcpy(&(*mi), data, 16); // OK (mi is iterator)
※ iteratorがメモリを解除します。そして、iteratorが解体されるときに自動ロックされる仕組みです。
◇ サンプルコード
prevector_s<28, uint8_t> test2; // prevector + ::mlock + ::mprotect test2.push_back('m'); test2.push_back('i'); test2.push_back('k'); test2.push_back('e'); test2.push_back('n'); test2.push_back('e'); test2.push_back('k'); test2.push_back('o'); for(auto mi = test2.begin(); mi!=test2.end(); ++mi) ::fprintf(stdout, "%c\n", *mi);