inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Trở thành người vượt qua kỳ thi lập trình - Hoàn thành trong 4 tuần

Độ phức tạp thời gian - Phân tích mã nguồn

시간복잡도 개념문제 Deque질문

79

somang567

2 câu hỏi đã được viết

0

[ 질문 배경 ]

Deque에 대한 자료를 보면 포인터를 사용한다고 나와있습니다.

따라서 popleft()시 맨 좌측부터 포인터가 가르키며 삭제하게 되는데, 이는 논리적으로 "삭제"라는 개념보다는 포인터가 가르키는 곳을 다음으로 이동시킨다는 의미를 가진다고 gpt를 통해 알게 되었습니다.

 

[ 질문 ]

  1. 그렇다면, popleft()시 포인터가 다음으로 이동할 시 메모리에 적재되어 있던 이전 값은

그대로 남아있게 될텐데, 그렇다면 이것은 메모리 낭비로 이어질 수 있지 않나요?

 

  1. 자바의 경우 가비지 컬렉터가 알아서 메모리를 관리하죠. GPT에게 물어보니 메모리 슬롯은 유지하며 재사용할 수 있도록 대기상태에 들어간다고 합니다.

     

    그렇다면 이 재사용을 할지 말지에 대한 것은 누가 결정하며 어떻게 처리되나요? 궁금합니다.

     


    C의 경우 malloc 으로 메모리 빌림 , 메모리 반납을 거치게 되는데, 이 경우도 궁금합니다.

python 알고리즘 data-structure 북-챌린지

Câu trả lời 1

0

dremdeveloper

deque는 하나의 거대한 배열이 아니라, 여러 개의 block으로 쪼개져 관리됩니다. 각 블록은 보통 64개의 포인터를 저장할 수 있는 고정 배열입니다.

 

말씀하신 대로 popleft()는 초기에는 논리적 삭제(포인터 이동)로 동작하다가, 특정 조건에서 물리적 해제가 발생합니다. 단, 그 방식이 전체 재할당이 아닌 블록 단위 해제입니다.

 

deque는 '전체 로드 팩터'를 계산하여 전체를 수축(Contraction)하지 않습니다. 대신 해당 블록이 완전히 비었을 때 그 블록만 떼어내어 메모리를 해제합니다.

 

정리하면 논리적 삭제를 하다가 블럭이 완전히 비는 조건이 되면 해당 블록만 떼어내어 메모리를 해제합니다.

 

 

백준 사이트 준비중이라 문제를 볼 수 가 없어요

0

8

0

작업형 1번문제... 환경관련

0

9

1

09차 네이버 영화 리뷰 수집 실습 관련 질문

0

12

1

12회 기출은 언제 업데이트 될까요??

0

9

1

알파벤티지 sleep(5) 관련 문의

0

16

1

강의 자료 및 코드 수령

0

19

2

8/6 작성한 연장문의 질문글에 대한 재요청

0

26

1

실전 계좌에서 운영하고 계신 분 계신가요?

1

36

2

수강기간 연장 문의

0

25

1

수강기간 연장문의

0

27

1

수강기간 연장 요청 문의드립니다

0

30

1

Fal.ai에 기존 AI를 끌어오는것은 안되는건가요?

0

29

1

잘못된 파일 다운로드

0

33

1

DataSet 다운 받는 방법

0

28

1

어디다가 환불요청해야돼요

0

38

1

해당 차수 영상이 짤려 나갑니다

0

41

1

수업자료는 어디서 받나요

0

37

2

Lecture19 강좌pdf파일이 없네요..

0

27

1

클로드

0

42

2

테이블 적재 Task 작성 실습

0

39

2

수강 기간 연장 문의

0

36

1

[데이터 전처리] dropna에서 특정 두 지표만 기준으로 결측치를 제거한 이유가 궁금합니다

1

26

1

pip install -r requirements.txt

0

46

2

명령 프롬프트

0

36

2