forked from project-oak/hafnium-verification
-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Description
변수를 초기화하는 일에는 세 가지를 고려해야 합니다:
보안
초기화되지 않은 변수를 읽는 것을 허용하면 보안적 취약점이 될 수 있습니다. MaybeUninit::uninit()
을 사용하지 않는 것이 제일이지만 쉽지 않군요. Idiomatic Rust는 struct를 초기화할 때 모든 field를 명시해야 하므로 부분적으로 초기화되지 않는 경우가 없음을 보장할 수 있습니다.
메모리 안전성
- RVO나 move forwarding과 같은 최적화는 항상 일어나는 것이 아니며, 때문에 스택에 너무 큰 임시 변수를 할당하면서 stack overflow가 일어날 수 있습니다. (Stack-consuming ArrayVec #50)
- 자기 자신을 참조하는 변수들은 최종 할당되는 공간의 주소를 기준으로 초기화해야 합니다.
Idiomatic (?)
가장 Rusty 한 코드는 var = SomeThing::new(...);
로 초기화하는 것입니다. 최종적인 코드의 모습은 이런 식이 되도록 리팩토링해야 합니다.
Metadata
Metadata
Assignees
Labels
No labels