最近在做项目时,出现了一个令程序崩溃的bug,原因很简单易懂,但是也因为自己不够注意导致疏忽了。现在在这里写下来警惕一下自己,以后要注意代码的质量,尽量编写高质量的代码,多学习优秀代码。
原因:程序中有一个操作FunA要执行多次,在执行这个操作中,变量A为一个类型为X的List,每次我都先执行New List 操作,然后却将变量A直接指向函数FunB的返回值,这导致了出现new 出的空间浪费且得不到释放。因为FunA 要执行多次,因此到最后会导致内存泄露,程序崩溃。
for(int i = 0; i < n;i ++)
{
FunA();
}
private void FunA(…………………………)
{
A = new List<X>(); // -----造成内存泄露的原因
A = FunB();
…………………………
}
private List<X> FunB(…………………………)
{
List<X> temp = new List<X>();
…………………………
reutrn temp;
}