In general, the things your compiler thinks are UB are not the same things your OS or CPU thinks are undefined.
And yes, it does happen in practice, most famously it has been mentioned in the "The strange details of std::string at Facebook" talk at CppCon 2016 https://youtu.be/kPR8h4-qZdk?t=1150&si=2R358wniZfxTJLmc
Edit: nevermind, I mixed up MADV_DONTNEED with MADV_FREE
In general, the things your compiler thinks are UB are not the same things your OS or CPU thinks are undefined.