379
2015-03-08 13:43:02
0
A와 B가 변수 x를 사용하고 있다고 가정해봅시다. 그런데 A는 변수 x 를 사용하지 않아 x의 메모리를 할당 해제를 했는데 B는 x가 할당 해제된지 모르고 사용하려고 하게 되고 이는 B가 Invalid Pointer 에 접근하게 되는 버그를 발생시킵니다. 이는 댕글링 포인터 (Dangling Pointer) 또는 해제 후 사용(Use-After-Free) 이라고 불립니다.
이러한 상황을 발생시키지 않게 하기 위해서 Rust 에서는 lifetimes 라는 개념을 이용하는데요 자세한 내용은 그 아래 scope 에 대한 예제들을 참고하시면 될 것 같습니다.
번외로 현재 대부분의 웹 브라우저를 이용한 해킹 기술이 UAF (use-after-free) 버그를 통해 발생되고 있습니다 :P