피드로 돌아가기
[Rust Guide] 8.1. Vector
Dev.toDev.to
Backend

Heap 메모리 기반 동적 배열 Vec<T>를 통한 런타임 데이터 확장성 확보

[Rust Guide] 8.1. Vector

SomeB1oody2026년 4월 11일9beginner

Context

Stack 기반 배열의 컴파일 타임 크기 고정 제약을 해결하기 위한 동적 컬렉션 필요성 대두. 런타임 중 데이터 규모 변화에 유연하게 대응하는 가변 크기 저장 구조 설계가 요구됨.

Technical Solution

  • Heap 영역에 연속된 메모리 공간을 할당하여 런타임 시 크기 조절이 가능한 Vec 구조 채택
  • Vec::with_capacity를 통한 사전 메모리 할당으로 불필요한 Reallocation 발생 억제 및 성능 최적화
  • Indexing 방식의 직접 접근과 Option 타입을 반환하는 get 메서드를 통한 메모리 안전성 확보 및 Panic 방지
  • Borrow Checker를 통한 Mutable Reference와 Immutable Reference의 동시 존재 금지로 Dangling Reference 원천 차단
  • 메모리 재할당 시 기존 참조 주소가 무효화되는 지점을 추적하여 메모리 안정성을 보장하는 소유권 시스템 적용

- 예상 데이터 규모 파악 시 Vec::with_capacity로 초기 용량을 설정하여 Reallocation 비용 최소화 - 런타임 인덱스 에러로 인한 Panic 방지를 위해 Indexing 대신 .get() 메서드와 Match 구문 사용 - Vector 요소 수정 시 Mutable Reference의 유효 범위를 제한하여 메모리 안전성 확보

원문 읽기