64,676
社区成员
发帖
与我相关
我的任务
分享
typedef struct _A
{
string str;
}A;
int main(int argc, char* argv[])
{
A a;
a.str = "1";
list<A> list_A;
list_A.assign(1000000, a);
//list<A>().swap(list_A); 可释放内存
list<A>::iterator it;
for (it = list_A.begin(); it != list_A.end(); ++it)
{
it->str.clear(); //没释放
string().swap(it->str);//没释放
}
}
typedef struct _A
{
char* pszData;
int nLen;
}A;
int main(int argc, char* argv[])
{
list<A> list_A;
for(int i = 0; i < 1000000,i++)
{
A a;
a.pszData = new char[100];
a.nLen = 100;
memset(a.pszData,0,100);
strcpy(a.pszData,"1");
list_A.pushback(a);
}
//list<A>().swap(list_A); 可释放内存
list<A>::iterator it;
for (it = list_A.begin(); it != list_A.end(); ++it)
{
delete[] it.pszData;
it.pszData = NULL;
it.nLen = 0;
}
}
一不小心,就把你的代码改成面目全非了....http://www.cplusplus.com/reference/string/string/
你是怎么检查有没有内存释放的?