현재 std::map과 std::vector를 사용하여 프로그래밍을 하고 있는데요,
예를들어 다음과 같이 map_temp와 vector_temp를 선언해서 사용하고 있습니다.
std::map map_temp; std::vector vector_temp;
이때, map_temp와 vector_temp를 위해 사용되는 memory space를 어떻게 알 수 있는지 궁금합니다.
vector가 미리 할당하는 요소들의 개수는 vector::capacity를 이용하면 알 수 있습니다. map의 경우는 생성자에 넘기는 할당자에서 기록하도록 하는 방법으로 알 수 있습니다. 단, 내부 구현을 포함하는 정확한 메모리 사용량은 구현에 따라서 달라지며 이를 알 수 있는 방법은 STL 명세에 존재하지 않습니다.
STL도 heap을 사용한다는 것을 감안하면 디버거를 사용하거나 기타 비슷한 트릭을 통해 사용량을 알아낼 수는 있습니다. 원하시는게 이쪽은 아니겠지만..
--
size와 capacity를 가지고 memory size를 측정해보았는데 window에서는 capacity가 constant value를 갖는 반면에 linux에서는 capacity가 constant value가 아니고 dynamic value네요.
constant value라는 것은 window에서 기본적으로 15가 부여됨을 의미하고, dynamic value라는 것은 입력 또는 저장되는 값에 의존하여 capacity 값이 자동으로 결정됨을 의미합니다.
capacity가 상수일수는 없습니다. 크기를 계속늘리면서 확인해보세요.
.답변 감사합니다. ^^
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
vector가 미리 할당하는 요소들의 개수는
vector가 미리 할당하는 요소들의 개수는 vector::capacity를 이용하면 알 수 있습니다.
map의 경우는 생성자에 넘기는 할당자에서 기록하도록 하는 방법으로 알 수 있습니다.
단, 내부 구현을 포함하는 정확한 메모리 사용량은 구현에 따라서 달라지며 이를 알 수 있는 방법은 STL 명세에 존재하지 않습니다.
디버거를 사용하면 알 수 있긴 한데..
STL도 heap을 사용한다는 것을 감안하면 디버거를 사용하거나 기타 비슷한 트릭을 통해 사용량을 알아낼 수는 있습니다. 원하시는게 이쪽은 아니겠지만..
--
답변 감사합니다.
size와 capacity를 가지고 memory size를 측정해보았는데 window에서는 capacity가 constant value를 갖는 반면에
linux에서는 capacity가 constant value가 아니고 dynamic value네요.
constant value라는 것은 window에서 기본적으로 15가 부여됨을 의미하고, dynamic value라는 것은 입력 또는 저장되는 값에 의존하여 capacity 값이 자동으로 결정됨을 의미합니다.
capacity가 상수일수는 없습니다. 크기를
capacity가 상수일수는 없습니다. 크기를 계속늘리면서 확인해보세요.
답변 감사합니다. ^^
.답변 감사합니다. ^^
댓글 달기