메모리의 연속된 블록에 데이터를 순차 배치하는 **배열(Array)**과 파이썬 리스트의 동적 배열(Dynamic Array) 메모리 메커니즘을 학습합니다.
1. 배열 및 메모리 용어 사전 (Glossary)
- Static Array (정적 배열): C/C++ 언어처럼 선언 시점에 고정된 메모리 크기를 할당받는 배열입니다.
- Dynamic Array (동적 배열): 요소를 추가함에 따라 가용 메모리가 채워지면 자동으로 더 큰 메모리 공간을 확보하여 요소를 재할당하는 배열입니다.
- Amortized Time Complexity (분할 상쇄 시간 복잡도): 동적 배열에 요소를
append()할 때 가끔 일어나는 $O(N)$ 메모리 재할당 비용을 전체 $N$개 요소 추가 작업으로 나누어 평균 $O(1)$로 평가하는 분석법입니다.
2. 파이썬 리스트 동적 용어 확장 메커니즘 관찰 코드
import sys
# 파이썬 리스트의 가용 메모리 바이트 증가 관찰
dynamic_list = []
prev_size = sys.getsizeof(dynamic_list)
print(f"초기 빈 리스트 바이트 크기: {prev_size}")
for i in range(20):
dynamic_list.append(i)
current_size = sys.getsizeof(dynamic_list)
if current_size != prev_size:
print(f"요소 개수: {i+1:2d}개 -> 메모리 크기 재할당: {current_size} bytes")
prev_size = current_size