64,636
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <vector>
#include <string>
#include <windows.h>
using namespace std;
class CDeviceEntity
{
public:
int i;
string s1;
};
typedef std::vector<CDeviceEntity>DEVICES;
CDeviceEntity Entity;
DEVICES devs;
string strTemp;
int main()
{
start:
char ch[30];
for(int i=0;i<100;i++)
{
sprintf(ch,"×Ö·û´®Êä³ö %d",i);
Entity.i=i;
// Entity.s1=ch;
strTemp.assign(ch,i);
Entity.s1+=strTemp;
devs.push_back(Entity);
}
DEVICES::iterator dIter;
for(dIter=devs.begin();dIter!=devs.end();dIter++)
{
printf("%d %s\n",dIter->i,dIter->s1.c_str());
// printf("%d %p %p\n",dIter->i,dIter->i,dIter->s1.c_str());
}
printf("%=========================================================\n");
printf("%s %d %d %d %d\n",Entity.s1.c_str(),devs.max_size(),devs.size(),
Entity.s1.capacity(), Entity.s1.length());
if(!devs.empty())devs.clear();
Sleep(1500);
goto start;
return 0;
}
Entity.s1.capacity()和Entity.s1.length()的值越来越大?内存没释放掉?int main()
{
start:
{//局部化开始位置
char ch[30];
for(int i=0;i<100;i++)
{
sprintf(ch,"×Ö·û´®Êä³ö %d",i);
Entity.i=i;
// Entity.s1=ch;
strTemp.assign(ch,i);
Entity.s1+=strTemp;
devs.push_back(Entity);
}
DEVICES::iterator dIter;
for(dIter=devs.begin();dIter!=devs.end();dIter++)
{
printf("%d %s\n",dIter->i,dIter->s1.c_str());
// printf("%d %p %p\n",dIter->i,dIter->i,dIter->s1.c_str());
}
printf("%=========================================================\n");
printf("%s %d %d %d %d\n",Entity.s1.c_str(),devs.max_size(),devs.size(),
Entity.s1.capacity(), Entity.s1.length());
if(!devs.empty())devs.clear();
Sleep(1500);
}//局部化结束位置
goto start;
return 0;
}
if(!devs.empty())devs.clear();
为什么还要Entity.s1="";?