以下に、コメントアウトされた1行のコードブロックがあります。メソッドで行われることCreateArray
は、コメント化された行が行うことと同じです。私の質問は、行がコメントされていないときになぜそれが機能するのにb->ArrayItems = d
、コメントアウトされたときにゴミを返すのですか?すべての情報が管理されていないため、何も「修正」する必要はないと思います。この仮定は間違っていますか?
class Program
{
unsafe static void Main(string[] args)
{
someInstance* b = stackalloc someInstance[1];
someInstance* d = stackalloc someInstance[8];
b->CreateArray();
// b->ArrayItems = d;
*(b->ArrayItems)++ = new someInstance() { IntConstant = 5 };
*(b->ArrayItems)++ = new someInstance() { IntConstant = 6 };
Console.WriteLine((b)->ArrayItems->IntConstant);
Console.WriteLine(((b)->ArrayItems - 1)->IntConstant);
Console.WriteLine(((b)->ArrayItems - 2)->IntConstant);
Console.Read();
}
}
public unsafe struct someInstance
{
public someInstance* ArrayItems;
public int IntConstant;
public void CreateArray()
{
someInstance* d = stackalloc someInstance[8];
ArrayItems = d;
}
}