执行期间结构值被覆盖

时间:2018-10-16 10:21:26

标签: c# structure unmanaged ushort

我的结构定义如下:

[StructLayout(LayoutKind.Explicit, Size = 10)]
public struct AudioSampleInfo
{
    [FieldOffset(0)]
    public ushort AudioBitPerSample;

    [FieldOffset(2)]
    public ushort AudioNumChannels;

    [FieldOffset(4)]
    public ushort AudioType;

    [FieldOffset(6)]
    public uint AudioSampleRate;
}

但是,在执行期间,值似乎发生了变化。 似乎内存中分配的字节数组似乎重叠。

在程序执行期间,我们将值设置为:

AudioSampleInfo audioInfo = new AudioSampleInfo();
audioInfo.AudioBitPerSample = 16;
audioInfo.AudioNumChannels = 1;

设置AudioNumChannels后,AudioBitsPerSample的值将更改为272。

关于为什么会发生这种情况,我似乎找不到任何问题。

有什么建议会有所帮助吗?

0 个答案:

没有答案