有关vector存放指针的问题

losky 2007-08-28 03:14:55
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
...全文
214 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
iatsbg 2007-08-28
  • 打赏
  • 举报
回复
vector的内部可能分配了内存,而这块内存在你调用Difference时还没有释放,所以就会造成内存泄漏的假象了。试试把检查内存的代码放到循环外面。
taodm 2007-08-28
  • 打赏
  • 举报
回复
不会内存泄露。
losky 2007-08-28
  • 打赏
  • 举报
回复
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();
就是这上面应该不会造成内存泄漏吧,
taodm 2007-08-28
  • 打赏
  • 举报
回复
你是看见系统内存越来越小了呢,还是你那个Difference总是稳定的值差?
内存泄露,不是你这么随便搞搞就真的能作数的。

64,681

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧