相关疑难解决方法(0)

究竟什么是非托管资源?

我想知道非托管资源.任何人都可以给我一个基本的想法吗?

c# unmanaged

148
推荐指数
5
解决办法
6万
查看次数

垃圾收集器是否会为我调用IDisposable.Dispose?

.NET IDisposable Pattern 意味着如果您编写终结器并实现IDisposable,则终结器需要显式调用Dispose.这是合乎逻辑的,而且在极少数情况下我总是会做终结器的保证.

但是,如果我这样做会发生什么:

class Foo : IDisposable
{
     public void Dispose(){ CloseSomeHandle(); }
}
Run Code Online (Sandbox Code Playgroud)

并且不要实现终结器或任何东西.框架会为我调用Dispose方法吗?

是的,我意识到这听起来很愚蠢,而且所有的逻辑都暗示它不会,但我总是有两件事让我不确定.

  1. 几年前有人曾告诉我,事实上它会这样做,而且那个人有"非常了解他们的东西"的良好记录.

  2. 编译器/框架根据您实现的接口(例如:foreach,扩展方法,基于属性的序列化等)执行其他"神奇"操作,因此这也可能是"魔术".

虽然我已经阅读了很多关于它的内容,并且有很多暗示的内容,但我从来没有能够找到这个问题的肯定是或否答案.

.net dispose idisposable

126
推荐指数
5
解决办法
3万
查看次数

退出C应用程序时,是否自动释放了malloc-ed内存?

假设我有以下C代码:

int main () {
  int *p = malloc(10 * sizeof *p);
  *p = 42;
  return 0;  //Exiting without freeing the allocated memory
}
Run Code Online (Sandbox Code Playgroud)

当我编译并执行该C程序时,即在内存中分配一些空间之后,在我退出应用程序并且进程终止后,我分配的内存是否仍会被分配(即基本上占用空间)?

c memory-management

85
推荐指数
4
解决办法
3万
查看次数

如果程序意外关闭,IDisposable对象是否会被丢弃?

如果程序意外退出(异常或进程终止)会发生什么?是否存在此类(或其他)程序将终止的情况,但IDisposable对象将无法妥善处理?

我问的原因是因为我正在编写与外围设备通信的代码,我想确保它不会被置于糟糕的状态.

.net c# garbage-collection dispose terminate

24
推荐指数
4
解决办法
5774
查看次数