首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

有关vector存放指针的有关问题

2012-02-12 
有关vector存放指针的问题for(intk0k 100000k++){#ifdef_DEBUGCMemoryStateoldState,newState,difStat

有关vector存放指针的问题
for   (int   k   =0   ;   k <   100000   ;   k++)  
{
#ifdef   _DEBUG
CMemoryState   oldState,newState,difState;
oldState.Checkpoint();
#endif
vector <int*>   vecInt;
for   (int   i   =0     ;i   <   10000;   i++)
{
int*   pint   =new   int[100];
vecInt.push_back(pint);
}
vector <int*> ::iterator   it_INT;
for   (it_INT   =   vecInt.begin()   ;   it_INT   !=   vecInt.end();   it_INT++)
{
delete[]   (*it_INT);
}
vecInt.clear();
#ifdef   _DEBUG
newState.Checkpoint();
if   (   difState.Difference(oldState,newState)   )
{
printf( "memory   leak...\n ");
}
#endif
}这样内存会泄漏吗,   我认为这样不会泄漏内存,但却一直在报memory   leak...,why

[解决办法]
你是看见系统内存越来越小了呢,还是你那个Difference总是稳定的值差?
内存泄露,不是你这么随便搞搞就真的能作数的。

[解决办法]
vector的内部可能分配了内存,而这块内存在你调用Difference时还没有释放,所以就会造成内存泄漏的假象了。试试把检查内存的代码放到循环外面。

热点排行