Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

변수 잘 초기화하기 #53

Open
efenniht opened this issue Sep 11, 2019 · 0 comments
Open

변수 잘 초기화하기 #53

efenniht opened this issue Sep 11, 2019 · 0 comments

Comments

@efenniht
Copy link
Collaborator

efenniht commented Sep 11, 2019

변수를 초기화하는 일에는 세 가지를 고려해야 합니다:

보안

초기화되지 않은 변수를 읽는 것을 허용하면 보안적 취약점이 될 수 있습니다. MaybeUninit::uninit()을 사용하지 않는 것이 제일이지만 쉽지 않군요. Idiomatic Rust는 struct를 초기화할 때 모든 field를 명시해야 하므로 부분적으로 초기화되지 않는 경우가 없음을 보장할 수 있습니다.

메모리 안전성

  • RVO나 move forwarding과 같은 최적화는 항상 일어나는 것이 아니며, 때문에 스택에 너무 큰 임시 변수를 할당하면서 stack overflow가 일어날 수 있습니다. (Stack-consuming ArrayVec #50)
  • 자기 자신을 참조하는 변수들은 최종 할당되는 공간의 주소를 기준으로 초기화해야 합니다.

Idiomatic (?)

가장 Rusty 한 코드는 var = SomeThing::new(...); 로 초기화하는 것입니다. 최종적인 코드의 모습은 이런 식이 되도록 리팩토링해야 합니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant