release mode下对const UnsafeCell的优化导致UB
💡
原文中文,约500字,阅读约需2分钟。
📝
内容提要
这段代码展示了在Debug模式下,UnsafeCell的值可以正常输出为10,但在Release模式下,访问UnsafeCell的值会导致未定义行为。
🎯
关键要点
- 代码使用了std::cell::UnsafeCell。
- UNSAFE_CELL被初始化为UnsafeCell<i32>类型,值为10。
- 在main函数中,local_unsafe_cell也被初始化为UnsafeCell<i32>,值为10。
- 在Debug模式下,UnsafeCell的值可以正常输出为10。
- 在Release模式下,访问UNSAFE_CELL的值会导致未定义行为(UB)。
- 文章探讨了Debug模式与Release模式下的行为差异。
🏷️
标签
➡️