피드로 돌아가기
Dev.toBackend
원문 읽기
C++ static 키워드를 통한 Storage Duration 및 Linkage 제어 전략
Static in the house - C++ tales #1
AI 요약
Context
함수 호출 시마다 변수가 초기화되는 Stack 메모리의 휘발성 특성으로 인한 상태 유지의 어려움 분석. 개별 객체마다 동일한 데이터를 중복 보유함에 따른 메모리 낭비 및 데이터 동기화 문제 식별.
Technical Solution
- Local Static Variable 도입을 통한 함수 종료 후에도 데이터 상태를 유지하는 정적 수명 주기 설계
- Stack 영역이 아닌 Data 영역에 변수를 할당하여 프로그램 종료 시까지 유효한 생명 주기 확보
- Static Class Member 설계를 통한 객체 인스턴스 독립적 공통 데이터 저장소 구축
- 클래스 외부 정의 방식을 통한 모든 인스턴스가 단일 메모리 주소를 참조하는 공유 구조 구현
- Linkage 제어를 통한 심볼 가시성 제한으로 이름 충돌 방지 및 캡슐화 강화
실천 포인트
- 함수 내 상태 유지가 필요하나 전역 변수 오염을 방지해야 하는 경우 Local Static 검토 - 모든 인스턴스가 공유해야 하는 설정값이나 불변 데이터 존재 시 Static Member 적용 - Static 변수 사용 시 Thread-safe 여부 및 초기화 순서(Static Initialization Order Fiasco) 확인