C#编程遇到的问题:System.NullReferenceException及其反思

本文通过一个实际案例,揭示了在重复调用函数过程中因忽视变量引用而导致的内存泄露问题。作者在循环调用FunA时,每次重新创建List实例后再赋值,造成原有空间未被释放,最终引发内存泄露,程序崩溃。文章强调了代码质量的重要性,提醒开发者关注内存管理,避免资源浪费。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做项目时,出现了一个令程序崩溃的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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值