【发布时间】:2015-10-25 15:11:38
【问题描述】:
我的代码 (C++) 有问题导致内存泄漏(我相信)。基本上我希望它执行以下操作:从用户那里获取数据,直到他写“停止”并从这些数据中堆出来。我想我在某些时候错过了预订内存的删除,但我不知道如何修复它。此外,代码似乎在 code::blocks 中运行,但在 Dev C++ 中崩溃。
cout<<"Enter data to heap if u wanna stop write stop."<<endl;
int *w1=new int[1];
int kek=0;
while(true)
{
cin>>*(w1);
if (!cin)
{ /// the "stop"" thingy
w1=w1-kek;
cout<<"heap: "<<endl;
for (int i=0;i<kek;i++)
{
cout<<" "<<*w1<<" ";
w1++;
}
break;
}
int *w2=new int[2+kek];
w1=w1-kek;
for(int t=0;t<kek+1;t++) ///rewriting data to new chunks of memory
{
*w2=*w1;
w2++;
w1++;
}
delete[]w1; ///releasing old ones ( i think something is wrong here)
w1=w2;
kek++;
w1=w1-kek-1;
int kekkeeper=kek;
for(int l=log(kek)/log(2);l>0;l--) /// heapnig things up
{
if(*(w1+kekkeeper/2)>*(w1+kekkeeper)) swap (*(w1+kekkeeper/2),*(w1+kekkeeper));
else break;
kekkeeper=kekkeeper/2;
}
w1=w1+kek+1;
w2=NULL;
delete[]w2;
}
【问题讨论】:
-
现在仍然很难说出变量名...
-
w2=NULL; delete[]w2;确实有意义。在将 w2 设置为 nullptr 之前删除它。 -
请更好缩进。代码不应看起来像正弦波。
标签: c++ memory-leaks