none
如何理解关于关于指针的这几句话? RRS feed

  • 问题

  • 第一个问题:“可以把指针声明为任意一种值类型——即任何预定义的类型unit、int和byte等,也可以声明为一个结构。但是不能把指针声明为一个类或数组。”

    ——这是《C#高级编程》里面的话。之前还举了个可用的例子:

    byte*[] pFlags;

    这个不是把指针声明为一个数组吗?为什么上面又说不可以了呢?

    ===============================================

    第二个问题:“为了正常工作,垃圾回收器需要知道在堆上创建了什么类的实例,它们在什么地方。但如果代码开始使用指针处理类,就很容易破坏堆中.NET运行库为垃圾回收器维护的与类相关的信息。

    ——下划线的句子又该如何理解?


    2012年7月4日 8:37

答案

  • 你好,

    这个指针的类型是byte,不是数组。

    第二个问题,这个涉及到一个引用计数的概念,一般当代码里增加一个引用的时候,计数器就加1,减少一个引用,计数器就减1,当引用计数为0的时候,这个对象就可以被回收了。如果用指针的话,它不影响引用计数器。这样就无法判断这个对象是否可回收。

    希望有用。


    Mike Feng
    MSDN Community Support | Feedback to us
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年7月5日 7:17
    版主

全部回复

  • 你好,

    这个指针的类型是byte,不是数组。

    第二个问题,这个涉及到一个引用计数的概念,一般当代码里增加一个引用的时候,计数器就加1,减少一个引用,计数器就减1,当引用计数为0的时候,这个对象就可以被回收了。如果用指针的话,它不影响引用计数器。这样就无法判断这个对象是否可回收。

    希望有用。


    Mike Feng
    MSDN Community Support | Feedback to us
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年7月5日 7:17
    版主
  • 你好,

    这个指针的类型是byte,不是数组。

    第二个问题,这个涉及到一个引用计数的概念,一般当代码里增加一个引用的时候,计数器就加1,减少一个引用,计数器就减1,当引用计数为0的时候,这个对象就可以被回收了。如果用指针的话,它不影响引用计数器。这样就无法判断这个对象是否可回收。

    希望有用。


    Mike Feng
    MSDN Community Support | Feedback to us
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    谢谢你通俗易懂的解释!之前是我把一些细节混淆了。
    2012年7月5日 13:43