摘要:
因为CLR的托管堆,能避免前面提到的bug(内存泄漏和使用已释放的内存) 还能为开发人员提供一个简化的编程模型:分配并初始化资源并直接使用。 大多数类型都无需要资源清理,垃圾回收器会自动释放内存。 C#之所以不用释放内存,是因为由CLR中的垃圾回收器来释放内存。 阅读全文
摘要:
C++程序员要手动管理内存。 如果创建的内存,不使用了。没有释放内存,造成内存泄漏。 要试图使用,已经释放的内存,程序就会报错。 以上两个bug一般无法预测他们的后果或者时间。 什么是内存泄漏? 自己搜索一下,要是从表面上看,以为是内存漏了呢。 是程序中已动态分配的堆内存,由于某种原因未释放或者无法 阅读全文
摘要:
①调用IL指令newobj,为代表资源的类型分配内存。 ②初始化内存,设置资源初始化状态并使资源可用。(类型的实例构造器负责设置初始状态) ③访问类型的成员来使用资源。 ④摧毁资源的状态已进行清理。 ⑤释放内存。垃圾回收器独自负责这一步。 阅读全文
摘要:
CLR via C#中的21章,托管堆和垃圾回收 开头,托管应用程序如何构造新对象,托管堆如何控制这些对象的生存期,以及如何回收这些对象的内存。 ①托管应用程序如何构造新对象; ②内存中如何控制这些对象的生存期; ③如何回收这些对象的内存。 继续摘抄书中的文字 在面向对象的环境中,每个类型都 代表可 阅读全文