![]() |
1
9
如果将其更改为值类型,请使用
否则,以C为例,因为GC做得很好。 |
![]() |
2
11
你不能(也不应该)那样做。即使你会用
|
![]() |
3
3
你必须来自C++。在.NET中,情况并非如此。 所有引用类型都分配在托管堆上,GC在那里跟踪它们。对于由快速退出的函数作用域的对象引用,分配的对象很可能只保留在托管堆的第0代中,这将导致非常高效的内存集合。托管堆被调到处理这样的短期对象。它甚至没有与您可以使用的C++堆相同的分配策略。 这就是clr的工作原理。如果您想以另一种方式工作,请尝试使用非托管运行时。 |
![]() |
4
1
在.NET中,类是引用类型,结构是值类型。 如果您真的想要在堆栈上分配类型,您可以创建一个结构。但是,有几个理由不:
最后,在堆上分配小对象本身没有什么不好的地方。内存管理器实际上是专门设计的,可以有效地处理小的短期对象。 下面是一个代码示例,如果它是一个结构,则不起作用,但是如果它是一个类,则可以正常工作:
|
![]() |
TheKing · 为什么数组的地址可以有负值? 2 年前 |
![]() |
yurnero · MATLAB:“加载”一个快速访问功能 6 年前 |
![]() |
joe · 一页可以同时在两个工作集中吗? 6 年前 |
![]() |
Jaques · “.exe”已触发断点 6 年前 |
![]() |
adn bps · 在函数中修改变量的高效内存方法 6 年前 |
![]() |
Gauraang Khurana · C语言中分段错误的不稳定行为 6 年前 |
![]() |
Rajesh K · 如何查找设备中存在的广告垃圾? 6 年前 |