vector<string> aa[10]; for(int i=0;i < 100000;i++){ aa[0].push_back("aaaaaaaaaaaa"); aa[1].push_back("aaaaaaaaaaaa"); } aa[0].clear();
메모리 해제가 안되네요...
해제를 할려면 어떻게 해야 할까요? ㅜ
http://ideone.com/DJXUvk
해보니까 잘 되는데, 해제가 안된다는게 어떤 의미이신가요?
============== 추가 ==============
메모리 할당 자체를 말씀하시는게 아닌가 싶은데, 이걸 의미하시는거라면
c++11 이전 표준이라면
// aa[0].clear(); 대신 aa[0] = std::vector<std::string>();
으로,
c++11 이후 표준이라면
aa[0].shrink_to_fit();
으로 메모리 할당을 해제하실 수 있습니다.
리눅스에서 돌리고 있는데 top으로 메모리를 확인 해보면 상주 하고 있는 메모리가 줄지가않아서 제대로 해제된건지 궁금해서요
바로 메모리 사용량을 줄이고 싶거든요...
정상입니다. 할당/해제는 오버해드가 크기 때문에 해제된 메모리는 나중에 다시 할당이 요구될때를 위해서 바로 회수되지 않습니다.
오류가 있어 수정합니다.
c++11 이전 표준이라면 http://stackoverflow.com/questions/1111078/reduce-the-capacity-of-an-stl-vector의 답변처럼
std::vector<T>(aa[0]).swap(aa[0]);
으로 c++11의 shrink_to_fit()을 흉내낼 수 있습니다.
답변 감사합니다^^ 이따가 한번 해봐야겟네요 ^^
텍스트 포맷에 대한 자세한 정보
<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]
http://ideone.com/DJXUvk해보니
http://ideone.com/DJXUvk
해보니까 잘 되는데, 해제가 안된다는게 어떤 의미이신가요?
============== 추가 ==============
메모리 할당 자체를 말씀하시는게 아닌가 싶은데, 이걸 의미하시는거라면
c++11 이전 표준이라면
으로,
c++11 이후 표준이라면
으로 메모리 할당을 해제하실 수 있습니다.
리눅스에서 돌리고 있는데 top으로 메모리를 확인
리눅스에서 돌리고 있는데 top으로 메모리를 확인 해보면
상주 하고 있는 메모리가 줄지가않아서 제대로 해제된건지
궁금해서요
바로 메모리 사용량을 줄이고 싶거든요...
정상입니다. 할당/해제는 오버해드가 크기 때문에
정상입니다.
할당/해제는 오버해드가 크기 때문에 해제된 메모리는 나중에 다시 할당이 요구될때를 위해서 바로 회수되지 않습니다.
오류가 있어 수정합니다. c++11 이전 표준이라면
오류가 있어 수정합니다.
c++11 이전 표준이라면 http://stackoverflow.com/questions/1111078/reduce-the-capacity-of-an-stl-vector의 답변처럼
으로 c++11의 shrink_to_fit()을 흉내낼 수 있습니다.
답변 감사합니다^^ 이따가 한번 해봐야겟네요 ^^
답변 감사합니다^^ 이따가 한번 해봐야겟네요 ^^
댓글 달기