首页 > 解决方案 > 在执行期间被覆盖的结构值

问题描述

我的结构定义如下:

[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。

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

任何的意见都将会有帮助 ?

标签: c#structureunmanagedushort

解决方案


推荐阅读