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模式下的行为差异。
➡️

继续阅读