我正在尝试在类析构函数中安全地将 std::array
归零。在这里,安全地 意味着我想确保编译器永远不会优化这个归零操作。下面是我的代码:
template<size_t SZ>
struct Buf {
~Buf() {
auto ptr = static_cast<volatile uint8_t*>(buf_.data());
std::fill(ptr, ptr + buf_.size(), 0);
}
std::array<uint8_t, SZ> buf_{};
};
这段代码会按预期工作吗?volatile
关键字是否会在任何情况下防止编译器进行优化?