VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2000|回复: 16

C#中的自定义对象怎么释放?

[复制链接]

3

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-2-17 17:30:01 | 显示全部楼层 |阅读模式
public class Foo
{
    public string name;
}

Foo foo = new Foo();
foo.name="tata";

//使用

//使用完了后想立即释放foo在堆中的内存,怎么释放?
回复

使用道具 举报

3

主题

11

帖子

12.00

积分

新手上路

Rank: 1

积分
12.00
发表于 2020-4-21 01:45:01 | 显示全部楼层
直接关闭

foo.Close();
回复

使用道具 举报

0

主题

38

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-4-21 16:30:01 | 显示全部楼层
用stackalloc关键字
在堆栈上分配内存块,此内存不受垃圾回收的制约,在方法返回后自动释放
回复

使用道具 举报

0

主题

38

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-4-21 18:45:02 | 显示全部楼层
需要unsafe上下文
回复

使用道具 举报

0

主题

38

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-4-21 19:45:01 | 显示全部楼层
而托管对象的内存只能由GC来自动回收
回复

使用道具 举报

1

主题

7

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-4-21 20:00:01 | 显示全部楼层
我想垃圾收集器会自动回收吧
回复

使用道具 举报

0

主题

110

帖子

63.00

积分

新手上路

Rank: 1

积分
63.00
发表于 2020-4-21 22:00:02 | 显示全部楼层
可以不用理,GC会自动回收的..
回复

使用道具 举报

3

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-4-21 23:45:01 | 显示全部楼层
cqgang:
stackalloc怎么加呢?如果我一定要动态释放,是不是不支持?
回复

使用道具 举报

3

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-4-22 10:00:02 | 显示全部楼层
kalian2000 :
我想由我来决定GC什么时候回收堆的内存,就是想迅速结束那个自定义对象的生命,可以么?
回复

使用道具 举报

0

主题

38

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-4-22 15:30:01 | 显示全部楼层
stackalloc只能用于非托管类型

Char * pc = stackalloc Char[10];
//因为是指针类型,要放在Unsafe块内
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表