免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1802 | 回复: 0
打印 上一主题 下一主题

hash_map如何释放内存,请高手指点,急!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-04-05 14:49 |只看该作者 |倒序浏览
下面是我的代码,但内存没有释放:
hash_map<const char*, int, hash<const char*>;, eqstr>; g_DataHashTable;

typedef struct {
  int id;
  char EnterpriseName[200];
  char Linkman[100];
  char Telephone[50];
} ST_Enterprise;

for(int i=0;i<200000;i++)
        {
            char *key=(char*)malloc(8);
            memset(key,0,8);
            ST_Enterprise *ep=(ST_Enterprise*)malloc(sizeof(ST_Enterprise));
            memset(ep,0,sizeof(ST_Enterprise));
            sprintf(key,"%d",i);
            printf("#\n");
            g_DataHashTable[key]=(int)ep;
            printf("%d  address is %d\n",i,ep);
        }

test();
        char iStr[8];
        memset(iStr,0,8);
       
        hash_map<const char*, int, hash<const char*>;, eqstr>;::iterator m_ptr;
        //for(m_ptr=g_DataHashTable.begin();m_ptr!=g_DataHashTable.end();)
        for(int i=0;i<200000;i++)
        {
            sprintf(iStr,"%d",i);
            m_ptr=g_DataHashTable.find(iStr);
            ST_Enterprise *ptr=(ST_Enterprise*)(m_ptr->;second);
            //char *sFirst=m_ptr->;first;
            g_DataHashTable.erase(m_ptr);
            printf("%d\n",ptr);
            free(ptr);
            ptr=NULL;
            //free(sFirst);
            //usleep(1000);       
        }
        for(int j=0;j<1000000;j++)
         printf("end\n");
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP