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