[Rust/러스트] 소유권(Owner)

2022. 2. 17. 11:36Programming Language/Rust

반응형

■ 소유권

소유권은 러스트의 핵심 기능으로써, 모든 프로그램은 실행하는 동안 컴퓨터의 메모리를 사용하는 방법을 관리해야 합니다. 러스트가 아닌 다른 몇몇 언어들은 프로그램이 실행될 때 더 이상 사용하지 않는 메모리를 끊임없이 찾는 가비지 콜렉션을 갖고 있으며, 이는 프로그래머가 직접 명시적으로 메모리를 할당하고 해제해야 합니다. 이와 달리 러스트의 메모리는 컴파일 타임에 컴파일러가 체크할 규칙들로 구성된 소유권 시스템을 통해 관리됩니다. 따라서 소유권 기능들은 런타임 비용이 발생하지 않습니다.

소유권을 잘 이해하기 위해 소유권의 규칙과 스택(Stack), 힙(Heap) 메모리에 역할과 기능에 대해 알아둘 필요가 있으며, 아래에서 간단히 확인해 보겠습니다.


◆ 소유권 규칙

  • 러스트의 각각의 값은 해당값의 오너라고 불리는 변수를 갖습니다.
  • 하나의 오너만 존재할 수 있습니다.
  • 오너가 스코프 밖으로 벗어날 때, 값이 버려집니다.

◆ 스택(Stack)

  • 런타임에 사용할 수 있는 메모리 부분입니다.
  • 모든 데이터는 고정된(불변) 크기를 갖습니다.
  • 후입선출(LIFO : Last In First Out) 자료구조 형식을 따릅니다.
  • 데이터에 접근하는 방식이 빠릅니다.

◆ 힙(Heap)

  • 런타임에 사용할 수 있는 메모리 부분입니다.
  • 컴파일 타임에 크기가 결정되어 있지 않거나 변경될 수 있는 데이터를 저장합니다.
  • 힙에 데이터를 넣을 때는 운영체제에 의해 공간을 할당 받고, 해당 공간의 포인터를 스택에 저장합니다.
  • 힙에 저장된 데이터에 접근할 때 저장 방식에 역순으로 스택에서 포인터를 통해 힙 공간으로 접근합니다.
  • 데이터에 접근하는 방식이 스택에 비해 느립니다.
  • 힙 데이터를 관리하는 것이 소유권의 존재 이유입니다.

 

반응형