2

これは壊れそうですか?正常にコンパイルされますが、読み取り値に基づいて、_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。これらは以前は参照型でしたが、メモリのオーバーヘッドが大きくなりすぎます。

-リストは、検索操作で関連するPointType0が見つかった場合にのみ返され、このリストは渡されてロットで操作されます。

4

1 に答える 1

6

安全ではありません。

コードがfixedブロックを離れた後、ガベージコレクターは自由に物事を再び動かすことができます。ここで何を達成しようとしていますか?ポインタの代わりに、リスト内のアイテムのインデックスを使用したいですか?

于 2012-05-25T03:08:17.460 に答える