1

我在 C++ 中有一个结构定义,如下所示:

struct check1
{
  check1(USHORT vaultLen)
  {
    size = sizeof(*this->vaultLen) + vaultLen + sizeof(*this->digestKey);
    buffer = new UCHAR[size];

    this->vaultLen = (USHORT*)buffer;
    this->vaultData = buffer + sizeof(vaultLen);
    this->digestKey = (UCHAR(*)[8])(buffer + sizeof(vaultLen) + vaultLen);

    *(this->vaultLen) = vaultLen;
  }


  USHORT *vaultLen;
  UCHAR *vaultData;
  UCHAR (*digestKey)[8];

  UCHAR* buffer;
  USHORT size;
}

我不想使用不安全的代码,所以不允许使用指针。C# 中的等效结构是什么?定义为指针的成员是否真的占用空间?

关于如何使用这个结构,这个结构的一个对象被创建并且它的大小成员被传递给一个 int。

4

1 回答 1

1

不用于互操作的等效 C# 结构如下所示:

public class check1
{
    public byte[] digestKey = new byte[8];
    public List<byte> vaultData;
}

其他成员不是必需的,因为buffer它只是一个用于保存digestKey和的内存块,其他成员vaultData是大小缓冲区,以允许快速访问缓冲区中各种数据成员的正确位置。

于 2013-10-28T16:28:27.540 回答