社区
C#
帖子详情
c#中 用 new 分配内存后,怎么把他释放掉?
HanZhu1
2003-12-26 07:14:45
多谢
...全文
10067
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 的垃圾收集器会自己清理的
C#
new
与malloc
这些操作确保对象的成员变量和方法得到正确的初始化,并提供了对象使用所需的初始状态。基类成员的初始化会调用基类的构造函数,而派生类新增的成员则可以在派生类的构造函数
中
初始化。关键字进行一些优化,例如对象池的使用或内存布局的优化。构造函数是一个特殊的成员方法,用于初始化对象的状态和执行必要的操作。等底层内存分配方法一般用于与非托管代码的交互或特殊情况下的性能优化,需要谨慎使用,并确保正确地管理内存的分配和
释放
。关键字来进行对象的实例化和内存的分配,因为它提供了更高级别的内存管理和自动垃圾回收。
关于
C#
调用C++dll传指针
释放
内存问题
一、传入dll前,在
C#
中
申请内存空间
c#
里面的指针即 IntPtr 申请如下: IntPtr SrcImgData = Marshal.AllocHGlobal(length); 这种需要提前知道空间大小,否则无法确定空间大小,会导致dll内部处理时越界报错。
c#
里面申请空间了,那么c++里面一般就是在这些空间里面操作了,一般不会重新
分配内存
,那么就不需要加引用了。 c++: uchar* SrcImg
c#
导入dll函数时申明: IntPtr SrcImg 那么内存
释放
自然也是由
c#
来进行。
【C++】动态内存管理 ④ ( 对象的动态创建和
释放
引申思考 | 基础数据类型 内存分析 | malloc
分配内存
delete
释放
|
new
分配内存
free
释放
内存 )
一、对象的动态创建和
释放
引申思考 二、基础数据类型 内存分析 1、malloc
分配内存
delete
释放
内存 2、
new
分配内存
free
释放
内存
C#
调用C++DLL时
释放
非托管内存
C#
调用C++DLL时
释放
非托管内存
编程语言详细介绍
C#
中
new
的几种用法
编程语言详细介绍
C#
中
new
的几种用法 本文主要介绍了
C#
中
new
的几种用法,具有很好的参考价值,下面跟着小编一起来看下吧 在
C#
中
,
new
关键字可用作运算符、修饰符或约束。
new
运算符 用于创建对象和调用构造函数。
new
修饰符 用于向基类成员隐藏继承成员。
new
约束 用于在泛型声明
中
约束可能用作类型参数的参数的类型。
new
修饰符(
C#
参考) 在用作修饰符时,
new
关键字可以显式隐藏从基类继承的成员。隐藏继承的成员意味着该成员的派生版本将替换基类版本。在不使
C#
111,128
社区成员
642,533
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章