so true

          心懷未來,開創(chuàng)未來!
          隨筆 - 160, 文章 - 0, 評(píng)論 - 40, 引用 - 0

          導(dǎo)航

          <2014年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          常用鏈接

          留言簿(8)

          隨筆分類(157)

          隨筆檔案(158)

          牛人博客

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          調(diào)查:map在clear之后并沒有釋放內(nèi)存

          http://jdoc.iteye.com/blog/1217804
          http://valgrind.org/docs/manual/ms-manual.html
          http://manyhappy163.blog.163.com/blog/static/16447683120105174149969/
          http://hi.baidu.com/algorithms/item/77e5c6bfed350d77244b097f
          經(jīng)過調(diào)查,結(jié)論是:
          1。map不能使用swap的方式來強(qiáng)制釋放內(nèi)存;
          2。map用的allocator,新版gcc用new_allocator,不存在pool的問題;
          3。根本原因是free函數(shù)(libc內(nèi)部實(shí)現(xiàn)),并沒有把你內(nèi)存真正的釋放,這個(gè)與free的內(nèi)部實(shí)現(xiàn)機(jī)制有關(guān)了。
          下面是一個(gè)小的測(cè)試程序
          $ cat test_mem_seg.cpp 
          #include <vector>
          #include <malloc.h>
          #include <stdio.h>
          #include <iostream>
          #include <stdlib.h>
          int main(int argc, char* argv[]) {
              std::vector<void*> v;
              int block_len = 120;
              if (argc > 1) {
                  block_len = atoi(argv[1]);
              }
              for (int i = 0; i < 1024 * 1024; ++i) {
                  char* p = (char*)malloc(block_len);
                  sprintf(p, "%d", i);
                  v.push_back(p);
              }
              std::cout << "\n===============malloc (block unit size:" << block_len << ") ok==============\n";
              malloc_stats();
              for (int i = 0; i < 1024 * 1024; ++i) {
                  free(v[i]);
              }
              std::cout << "\n===============free  (block unit size:" << block_len << ") ok==============\n";
              malloc_stats();
          }

          posted on 2014-09-18 14:26 so true 閱讀(2597) 評(píng)論(0)  編輯  收藏 所屬分類: C&C++

          主站蜘蛛池模板: 精河县| 富川| 新干县| 平安县| 嘉兴市| 宜兰县| 民乐县| 古丈县| 武威市| 綦江县| 彭阳县| 梅河口市| 佛山市| 韶山市| 赤壁市| 平果县| 松桃| 神木县| 琼结县| 呈贡县| 轮台县| 晴隆县| 泌阳县| 七台河市| 大宁县| 石河子市| 宜君县| 泉州市| 山西省| 佛教| 北海市| 鸡东县| 富顺县| 五常市| 汝城县| 喀喇沁旗| 湖北省| 铜梁县| 中江县| 西和县| 清水县|