积极答复者
如何理解关于关于指针的这几句话?

问题
-
第一个问题:“可以把指针声明为任意一种值类型——即任何预定义的类型unit、int和byte等,也可以声明为一个结构。但是不能把指针声明为一个类或数组。”
——这是《C#高级编程》里面的话。之前还举了个可用的例子:
byte*[] pFlags;
这个不是把指针声明为一个数组吗?为什么上面又说不可以了呢?
===============================================
第二个问题:“为了正常工作,垃圾回收器需要知道在堆上创建了什么类的实例,它们在什么地方。但如果代码开始使用指针处理类,就很容易破坏堆中.NET运行库为垃圾回收器维护的与类相关的信息。”
——下划线的句子又该如何理解?
- 已编辑 moon_prince 2012年7月4日 8:39
答案
-
你好,
这个指针的类型是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.
- 已标记为答案 moon_prince 2012年7月5日 13:42
全部回复
-
你好,
这个指针的类型是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.
- 已标记为答案 moon_prince 2012年7月5日 13:42
-
你好,
这个指针的类型是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.