피드로 돌아가기
Static in the house - C++ tales #1
Dev.toDev.to
Backend

C++ static 키워드를 통한 Storage Duration 및 Linkage 제어 전략

Static in the house - C++ tales #1

Richard Toth2026년 6월 17일4beginner

Context

함수 호출 시마다 변수가 초기화되는 Stack 메모리의 휘발성 특성으로 인한 상태 유지의 어려움 분석. 개별 객체마다 동일한 데이터를 중복 보유함에 따른 메모리 낭비 및 데이터 동기화 문제 식별.

Technical Solution

  • Local Static Variable 도입을 통한 함수 종료 후에도 데이터 상태를 유지하는 정적 수명 주기 설계
  • Stack 영역이 아닌 Data 영역에 변수를 할당하여 프로그램 종료 시까지 유효한 생명 주기 확보
  • Static Class Member 설계를 통한 객체 인스턴스 독립적 공통 데이터 저장소 구축
  • 클래스 외부 정의 방식을 통한 모든 인스턴스가 단일 메모리 주소를 참조하는 공유 구조 구현
  • Linkage 제어를 통한 심볼 가시성 제한으로 이름 충돌 방지 및 캡슐화 강화

- 함수 내 상태 유지가 필요하나 전역 변수 오염을 방지해야 하는 경우 Local Static 검토 - 모든 인스턴스가 공유해야 하는 설정값이나 불변 데이터 존재 시 Static Member 적용 - Static 변수 사용 시 Thread-safe 여부 및 초기화 순서(Static Initialization Order Fiasco) 확인

원문 읽기