C#不安全指针字段

时间:2012-05-25 03:05:52

标签: c# field unsafe

这会破裂吗?它编译得很好,但根据读数,我不确定它是否保证_ptRef总是指向构造函数中引用的结构。

我想通过'break'我的意思是...... GC会移动指针指向的结构(_ptRef)吗?

public unsafe class CPointType0
{
    private PointType0* _ptRef = null;

    public CPointType0(ref PointType0 spt)
    {
        fixed (PointType0 * pt = &spt)
        {
            _ptRef = pt;
        }
    }

...a bunch of property accessors to fields of _ptRef (accessed as return _ptRef->Thing) }

情景是

-PointType0是一个结构。

在数据结构的内存中有数百万个PointType0。这些曾经是引用类型,但是会有太多的内存开销。

-A仅在搜索操作找到相关的PointType0时返回List,并且该List被传递并在一个批次上操作。

1 个答案:

答案 0 :(得分:4)

这不安全。

代码离开fixed块后,垃圾收集器可以自由地再次移动。你想在这里完成什么?您是否想要使用列表中项目的索引而不是指针?