为什么c#不怕内存泄露

在c#里面为什么不用担心会发生内存泄露。... 在c#里面为什么不用担心会发生内存泄露。 展开
 我来答
鹏飞西街
推荐于2016-09-04 · TA获得超过2627个赞
知道小有建树答主
回答量:1432
采纳率:0%
帮助的人:1188万
展开全部
谁告诉你C#不会发生内存泄漏的?告诉你:这种说法是错误的,C#只是发生泄漏的机会小些,仅此而已,如果你在编写程序的时候出现下面的错误,那泄漏的机会就是100%了,例:
TcpListener listener=new TcpListener(m_Port);
listener.Start();
Thread ListenerThread=new Thread(new ThreadStart(AccecptRequest));
ListenerThread.Start();

private void AccecptRequest()
{
while(true)
{
if(listener.Pending())
{

}
else
{
Thread.Sleep(100);
}
}
}

listener.Pending()这句代码就会造成内存泄漏,不信你试试看?
迪凯特科技(北京)有限公司
2023-07-28 广告
单片机串口通信数据丢失的原因可能如下:1. 按键通过串口发送对应命令,第一次按按键串口发送的指令正确且能把数据正确的显示出来,在第二次按按键串口发送的指令出现丢失的状况,可能是因为串口通信的波特率设置不正确。2. 如果单片机和外部设备的波特... 点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
似佑平臧雨
2020-02-18 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:34%
帮助的人:951万
展开全部
谁告诉你C#不会发生内存泄漏的?告诉你:这种说法是错误的,C#只是发生泄漏的机会小些,仅此而已,如果你在编写程序的时候出现下面的错误,那泄漏的机会就是100%了,例:
TcpListener
listener=new
TcpListener(m_Port);
listener.Start();
Thread
ListenerThread=new
Thread(new
ThreadStart(AccecptRequest));
ListenerThread.Start();
private
void
AccecptRequest()
{
while(true)
{
if(listener.Pending())
{
}
else
{
Thread.Sleep(100);
}
}
}
listener.Pending()这句代码就会造成内存泄漏,不信你试试看?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiangweiwei54
2009-07-03 · TA获得超过209个赞
知道答主
回答量:134
采纳率:0%
帮助的人:0
展开全部
因为C#自己会回收内存,有自动回收机制,鹏飞西街说的那根本就不是内存泄露。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友94f02eb
2009-07-03 · TA获得超过8612个赞
知道大有可为答主
回答量:7955
采纳率:74%
帮助的人:4452万
展开全部
这种说法是不严密的。

虽然C# 有了 GC 这个垃圾自动回收机制,但是GC的回收发生的时间是不定的。
而且,对于非托管对象,以及网络链接,文件句柄等资源,还是很容易造成内存泄漏的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
历又
2009-07-03 · TA获得超过299个赞
知道小有建树答主
回答量:726
采纳率:100%
帮助的人:451万
展开全部
同意楼上的。

而且C#还可以执行不安全的代码呢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式