Update what-unsafe-does.md

pull/464/head
nomicon-kr 10 months ago committed by GitHub
parent 0aa9cbc787
commit b1d97e577e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -8,7 +8,7 @@
* `static` 변수의 값을 변경하기
* `union` 의 필드를 접근하기
이게 니다. 이런 연산들이 불안전의 영역으로 추방된 이유는, 이것들 중 하나라도 잘못 사용할 경우 그토록 두렵던 미정의 동작을 일으키기 때문입니다.
이게 전부입니다. 이런 연산들이 불안전의 영역으로 추방된 이유는, 이것들 중 하나라도 잘못 사용할 경우 그토록 두렵던 미정의 동작을 일으키기 때문입니다.
미정의 동작을 일으키면 컴파일러가 당신의 프로그램에 임의의 나쁜 짓들을 할 수 있는 모든 권리를 얻게 됩니다. 당연하게도 미정의 동작은 *일으켜서는 안됩니다.*
C와 다르게, 미정의 동작은 러스트에서는 꽤 제한되어 있습니다. 러스트의 코어 언어가 막으려고 하는 것들은 이런 것들입니다:
@ -27,7 +27,7 @@ C와 다르게, 미정의 동작은 러스트에서는 꽤 제한되어 있습
* [초기화되지 않은 메모리][uninit] 로부터 읽어들인 정수 (`i*`/`u*`), 부동소수점 값 (`f*`), 혹은 생 포인터, 혹은 `str` 안의 초기화되지 않은 메모리.
* 달랑거리거나, 정렬되지 않았거나, 유효하지 않은 값을 가리키는 레퍼런스/`Box`
* 잘못된 메타데이터를 가지고 있는 넓은 레퍼런스, `Box`, 혹은 생 포인터:
* `dyn Trait` 메타데이터는 그것이 `Trait`의 vtable 아닐 경우 유효하지 않습니다
* `dyn Trait` 메타데이터는 그것이 `Trait`의 vtable을 가리키는 포인터가 아닐 경우 유효하지 않습니다

Loading…
Cancel
Save