add <cstring> for std::memset