• C#中New操作符


    CLR要求所有对象都用new操作符来创建,如下面这样:

    Employee e = new Employee("zhangsan");

    以下是new 操作符所做的事情。

    1、它计算类型及其所有基类型(一直到System.Object,虽然它没有定义自己的实例字段)中定义的所有实例字段需要的字节数。堆上的每个对象都需要一些额外的成员——即"类型对象指针"和"同步块索引",这些成员由CLR用于管理对象。这些额外成员的字节数会计入对象大小。

    2、它从托管堆中分配指定类型要求的字节数,从而分配对象的内存,分配的所有字节都设为零。

    3、它初始化对象的"类型对象指针"和"同步块索引"成员。

    4、调用类型的实例构造器,向其传入在对new的调用中指定的任何实参。大多数编译器都在构造器中自动生成代码来调用一个基类构造器。每个类型的构造器在调用时,都要负责初始化由这个类型定义的实例字段。最终调用的是System.Object的构造器,该构造器只是简单地返回,不会做其他任何事情。

      new 执行了所有这些操作之后,会返回指向新建对象一个引用(指针)。

      并且,没有和new操作符对应的一个delete操作符;换言之,没有办法显示释放为一个对象分配的内存。CLR采用了垃圾回收机制,能自动检测到一个对象不再被使用或访问,并自动释放对象内容

  • 相关阅读:
    【读书笔记】深入理解计算机系统
    快速排序
    列表查找的两种方法
    冒泡排序、选择排序、插入排序
    堆排序
    supervisor进程管理
    redis-主从复制
    redis-淘汰策略
    URI和URL
    python爬虫之xpath的基本使用
  • 原文地址:https://www.cnblogs.com/sundebin68/p/3209448.html
Copyright © 2020-2023  润新知