社区
C#
帖子详情
c#中 用 new 分配内存后,怎么把他释放掉?
HanZhu1
2003-12-26 07:14:45
多谢
...全文
5979
19
打赏
收藏
c#中 用 new 分配内存后,怎么把他释放掉?
多谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
psn
2003-12-28
打赏
举报
回复
1
.net回自己释放,不过,如果如果写了析构函数,运行时会把这些对象从GC队列放入另一个队列,等待调用构析函数。显式调用Dispose可以避免对象经历第二个步骤即使他有构析函数。还可以用GC.SuppressFinalize函数,他也能立刻清理对象而不走第二步
loverP
2003-12-28
打赏
举报
回复
http://expert.csdn.net/Expert/topic/2482/2482323.xml?temp=.8409235
ArLi2003
2003-12-27
打赏
举报
回复
using (Form2 fm = new Form2()) {
fm.Show();
}
njx
2003-12-27
打赏
举报
回复
什么也不用做,GC会在适当的时候清理的
eyoexply
2003-12-27
打赏
举报
回复
它自己搞定
cwwwj
2003-12-27
打赏
举报
回复
你不用管它,自动收回了 :)
senzz
2003-12-27
打赏
举报
回复
系统会自己清理的
或者
object.dispose();
hlj321
2003-12-27
打赏
举报
回复
up
yunhi
2003-12-27
打赏
举报
回复
托管堆的内存由GC自动回收,在编写代码的时候也无需显式调用GC。非托管资源的内存释放可以声明一个析构器。
using System;
public sealed class OSHandle
{
// 保存一个非托管资源的win32句柄
private IntPtr handle;
// 构造器初始化句柄
public OSHandle(IntPtr handle)
{
this.handle = handle;
}
//当垃圾收集执行的时候,下面的析构器(Finalize)方法
//将被调用,它将关闭非托管资源句柄。
~OSHandle()
{
CloseHandle(handle);
}
// 返回所有封装的handle句柄
public IntPtr ToHandle()
{
return handle;
}
// 隐式转换操作符也用于返回所封装的Handle句柄
public static implicit operator IntPtr(OSHandle osHandle)
{
return osHandle.ToHandle();
}
// 释放非托管资源
[System.Runtime.InteropServices.DllImport("Kernel32")]
private extern static Boolean CloseHandle(IntPtr handle);
}
loverP
2003-12-27
打赏
举报
回复
1
没必要,什么也不用做,即使你Dispose()它或是GC.Collecct(),垃圾处理机制也只在它认为合适的时候才回收。唯一要注意的是好多之后不知涉及内存,还涉及到许多其它资源的占用,这时候就必须手动调用Dispose()释放,否则就会出现“内存还没用完就发生资源不足”的异常。
yanransoft
2003-12-27
打赏
举报
回复
object.dispose();
dragon515
2003-12-27
打赏
举报
回复
object.dispose()
先锋99999
2003-12-27
打赏
举报
回复
GC.Collect();
huangsuipeng
2003-12-26
打赏
举报
回复
这种情况依靠GC就够了
fengxue727
2003-12-26
打赏
举报
回复
在c#里有com+的概念吗。还没听说过。
com+是最终的二进制码,而c#编译的结果是中间码。
你吧c#编译成.dll不就行拉吗?这个应该很简单的。例如建一个类库。
fengxue727
2003-12-26
打赏
举报
回复
大部分能自动清理有的不行。
的显式清理。不然会出问题的。
IceboundRock
2003-12-26
打赏
举报
回复
把它设置为null,然后调用GC.Collect();
sharpblade
2003-12-26
打赏
举报
回复
自動清理
luyiping
2003-12-26
打赏
举报
回复
object.dispose();
但你不用担心,.net 的垃圾收集器会自己清理的
灵巧指针与垃圾回收(Java、
C#
、C++)
在JAVA 和
C#
中
都有垃圾回收功能,程序员在
分配
一段
内存
后可以不再理会,而由垃圾回收自动回收,从而使程序员从复杂的
内存
管理
中
解脱出来。这是JAVA 和
C#
的一大优点。而C++程序员在用
new
分配
了一段
内存
后,还必须用 delete
释放
,否则将造成资源泄漏。因此,一些C++ 书上经常告诫程序员:要养成好的习惯,
new
与 delete 要成对出现,时刻记住将
内存
释放
回系统。但是,事情只是这么简单吗?
c#
的GC垃圾回收机制详细讲解文档
今天来谈谈
C#
的GC,也就是垃圾回收机制,非常的受教,总结如下 首先:谈谈托管,什么叫托管,我的理解就是托付
C#
运行环境帮我们去管理,在这个运行环境
中
可以帮助我们开辟
内存
和
释放
内存
,开辟
内存
一般用
new
,
内存
是随机
分配
的,
释放
主要靠的是GC也就是垃圾回收机制。哪么有两个大问题 1.GC可以回收任何对象吗?2.GC什么时候来回收对象?回收那些对象?
C#
中
event
内存
泄漏总结
内存
泄漏是指:当一块
内存
被
分配
后,被丢弃,没有任何实例指针指向这块
内存
, 并且这块
内存
不会被GC视为垃圾进行回收。这块
内存
会一直存在,直到程序退出。
C#
是托管型代码,其
内存
的
分配
和
释放
都是由CLR负责,当一块
内存
没有任何实例引用时,GC会负责将其回收。既然没有任何实例引用的
内存
会被GC回收,那么
内存
泄漏是如何发生的?
内存
泄漏示例 为了演示
内存
泄漏是如何发生的,我们来看一段代码 class Program { static event Action TestEvent; static void Main(string[] args) { var memory =
new
TestA
详解
C#
Protobuf如何做到0
分配
内存
的序列化
主要介绍了详解
C#
Protobuf如何做到0
分配
内存
的序列化,文
中
通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
灵巧指针与垃圾回收(free)
在JAVA 和
C#
中
都有垃圾回收功能,程序员在
分配
一段
内存
后可以不再理会,而由垃圾回收自动回收,从而使程序员从复杂的
内存
管理
中
解脱出来。这是JAVA 和
C#
的一大优点。而C++程序员在用
new
分配
了一段
内存
后,还必须用 delete
释放
,否则将造成资源泄漏。因此,一些C++ 书上经常告诫程序员:要养成好的习惯,
new
与 delete 要成对出现,时刻记住将
内存
释放
回系统。但是,事情只是这么简单吗?
C#
110,567
社区成员
642,567
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章