deque강의에서 사이즈를 3으로 잡아뒀는데, 메모리에서는 4로 잡히는 이유가 뭘까요?
341
작성한 질문수 5
deque강의 12:14분경에 deque<int> dq(3,1)로 해서 사이즈를 3으로 잡아뒀는데, push_back을 했을 때 메모리에서 확인하면 4개로 확인이되고 그렇게 설명하셨는데, 왜 4개인지 알 수 있을까요?
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
deque강의에서 dq(3,1)로 deque 크기를 3으로 잡았지만, push_back을 했을 때 메모리에서는 4개의 공간이 차지되는 이유에 대해 궁금하시군요.
deque는 내부적으로 원형 버퍼로 구현되어 있습니다. 이러한 구조 때문에 메모리 공간을 효율적으로 사용하기 위해 추가적인 공간이 필요할 수 있습니다. 따라서, push_back 연산을 수행하면 더 많은 요소를 저장할 수 있는 충분한 메모리를 보장하기 위해 약간 더 큰 크기의 공간을 할당하는 것이 일반적입니다.
그렇기 때문에 dq(3,1)로 3개의 요소를 설정하더라도, 내부적으로는 조금 더 큰 크기인 4개의 공간을 할당하게 됩니다. 이는 deque가 추가 요소를 수용하는 데 있어서 효율적으로 동작할 수 있도록 하는 방법 중 하나입니다.
더 자세한 내용을 원하신다면, C++ 표준 라이브러리의 deque 구현 방식을 참고해보시길 추천드립니다. 감사합니다.
소스코드와 관련하여 질문드립니다
0
70
1
map 컨테이너의 emplace 함수에 대해
0
114
2
시작이 안되네요...!
0
97
2
EAX 명령어 실행 시 RAX의 상위 32비트가 초기화 되는 이유
0
126
1
리틀 엔디안 장점 질문합니다.
0
131
1
메모리 창에 주소를 넣었는데 영어 꺠짐
0
124
1
타입변환#2 build시 knight 인접 stack이 침범당했다는 error가 발생합니다.
0
94
2
map #1 8분 58초 맵은 레드블랙트리로 이루어진 것 같습니다.
1
139
2
hello world 부터 오류 ㅠㅜ
0
189
1
지역변수가 스택? 레지스터
0
132
2
마지막 문제 질문드립니다.
0
165
2
메모리창이 비활성화됩니다.
0
98
1
이중포인터 강좌 부분 질문있습니다.
0
145
1
2를 더하는 이유
0
133
1
메모리 주소 창 엔디안 질문 드립니다. 인프런 봇 답변도 괜찮습니다
1
111
1
해당 코드는 왜 오류가 날까요?
0
156
1
마지막 문제 질문 있습니다.
0
119
1
강의 마지막부분에 질문이 있습니다.
0
192
2
Field초기화
0
141
1
virtual과 override 차이
0
315
2
3:30 참조자 리턴
0
168
1
map 찾기
0
158
1
프로그램 질문드려요
0
260
1
캐스팅 질문
0
138
1





