- 论坛徽章:
- 0
|
下面是我的代码,但内存没有释放:
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"); |
|