시간복잡도 개념문제 Deque질문
68
投稿した質問数 2
[ 질문 배경 ]
Deque에 대한 자료를 보면 포인터를 사용한다고 나와있습니다.
따라서 popleft()시 맨 좌측부터 포인터가 가르키며 삭제하게 되는데, 이는 논리적으로 "삭제"라는 개념보다는 포인터가 가르키는 곳을 다음으로 이동시킨다는 의미를 가진다고 gpt를 통해 알게 되었습니다.
[ 질문 ]
그렇다면, popleft()시 포인터가 다음으로 이동할 시 메모리에 적재되어 있던 이전 값은
그대로 남아있게 될텐데, 그렇다면 이것은 메모리 낭비로 이어질 수 있지 않나요?
자바의 경우 가비지 컬렉터가 알아서 메모리를 관리하죠. GPT에게 물어보니 메모리 슬롯은 유지하며 재사용할 수 있도록 대기상태에 들어간다고 합니다.
그렇다면 이 재사용을 할지 말지에 대한 것은 누가 결정하며 어떻게 처리되나요? 궁금합니다.
C의 경우 malloc 으로 메모리 빌림 , 메모리 반납을 거치게 되는데, 이 경우도 궁금합니다.
回答 1
0
deque는 하나의 거대한 배열이 아니라, 여러 개의 block으로 쪼개져 관리됩니다. 각 블록은 보통 64개의 포인터를 저장할 수 있는 고정 배열입니다.
말씀하신 대로 popleft()는 초기에는 논리적 삭제(포인터 이동)로 동작하다가, 특정 조건에서 물리적 해제가 발생합니다. 단, 그 방식이 전체 재할당이 아닌 블록 단위 해제입니다.
deque는 '전체 로드 팩터'를 계산하여 전체를 수축(Contraction)하지 않습니다. 대신 해당 블록이 완전히 비었을 때 그 블록만 떼어내어 메모리를 해제합니다.
정리하면 논리적 삭제를 하다가 블럭이 완전히 비는 조건이 되면 해당 블록만 떼어내어 메모리를 해제합니다.
python main.py 실행시 게임이 실행이 안돼요
0
1
1
antigravity 대신 cursor를 활용해도 되나요?
0
8
1
뉴스 검색 분류 한도초과
0
12
2
완성자료
0
8
2
섹션5 노션링크 는 따로 없나요?
0
15
2
필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)
0
14
2
Part 4에서 강의 연관 노션 정보들이 워드파일에 없습니다.
0
17
2
첨부자료 Part 4 코드 확인 부탁드리겠습니다.
0
15
2
질문 드립니다.
0
37
2
노션 링크
0
39
3
26년 1회 실기 해설 강의
0
46
2
노션 권한요청하였습니다 언제쯤 볼수있나요
0
35
2
AAFM CWM_LEVEL_2 Exam Questions 2026: Right Preparation Method
0
24
1
강의 내용 관련 질문드립니다~
0
34
2
퍼플렉시티 최소 결제단위 50달러로 바뀐 것 같습니다.
0
37
2
잠겨버린 사물함 시간초과 관련 질문입니다.
0
22
1
수강 연장 문의
0
31
1
강의자료 일괄 다운로드
0
41
2
5번 강의 1분까지 완료 후 오류가 뜹니다
0
27
2
list 문제 질문드립니다~
0
28
2
for, range 추가 방법
0
31
0
빅분기 실기 12회 재도전
0
39
1
노션 접속 권한 요청드립니다.
0
27
2
강의 기간 연장 가능여부 검토 요청건
0
30
1

