[英]Pointer Memory Leak
我的指针p在一个函数内部,此代码会导致内存泄漏。
for(k=0;k< 3;k++)
{
int *p=NULL;
int val = bBreak[k+1] - bBreak[k];
p = new int [val+1];
p = &buff[bBreak[k]];
for(int i=0;i< val;i++)
{
cout<<"\n"<<p[i]<<endl;
}
}
是! 您永远不会释放内存。 您应该为通过new/new[]
分配的每条内存调用delete/delete[]
new/new[]
。
是的你将会
p = new int [val+1]; //allocate array on the heap
p = &buff[bBreak[k]]; //new allocated array is leaked because you lost the pointer to it
//and you are not able to call 'delete[]' to free the memory
通常,对new
运算符的每次调用都应与对operator delete
或delete[]
调用配对使用
是。 您必须使用new
delete
分配的每个内存。
p = new int [val+1];
p = &buff[bBreak[k]]; // here you lose track of the memory you've just allocated
如果您不想手动进行内存管理,请使用std::vector<int>
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.