有关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时还没有释放,所以就会造成内存泄漏的假象了。试试把检查内存的代码放到循环外面。