
#[derive(Debug)] struct Hello { _dummy: bool, data: [u32; 4], } fn main() { let mut hello: MaybeUninit<Hello> = MaybeUninit::uninit(); let ptr = hello.as_mut_ptr(); unsafe { addr_of_mut!((*ptr).data).write([1, 2, 3, 4]) }; let hello = unsafe { hello.assume_init() }; println!("{:?}", hello.data); } 这个 _dummy 未初始化,按文档说调用 assume_init 前未完全初始化立刻造成未定义行为。
但是对于完全不使用的字段,算不算未定义行为?以及这样做会不会对程序造成潜在 BUG 或安全漏洞?
1 dyc12389 2024-08-03 09:37:56 +08:00 dummy 没有初始化,肯定运行报错了。 |