gpt4 book ai didi

c# - 如何在 C# 中创建此结构?

转载 作者:行者123 更新时间:2023-11-30 22:22:51 25 4
gpt4 key购买 nike

我正在尝试在此 msdn 中创建以下结构文章。我正在尝试学习整个 FieldOffset,但不知道从哪里开始。

我基本上就是这样做的。

[StructLayout(LayoutKind.Explicit, Size=12)]
public struct DHCP_OPTION_DATA_ELEMENT {
[FieldOffset(0)]
public DHCP_OPTION_DATA_TYPE OptionType;
[FieldOffset(4)]
public byte ByteOption;
[FieldOffset(4)]
public uint WordOption;
[FieldOffset(4)]
public UInt32 DWordOption;
[FieldOffset(4)]
public UInt32 DWordDWordOption;
[FieldOffset(4)]
public uint IpAddressOption;
[FieldOffset(4)]
public IntPtr StringDataOption;
[FieldOffset(4)]
public DHCP_BINARY_DATA BinaryDataOption;
[FieldOffset(4)]
public DHCP_BINARY_DATA EncapsulatedDataOption;
[FieldOffset(4)]
public string Ipv6AddressDataOption;
}

但是,它向我咆哮并指出以下异常。

it contains an object field at offset 4 that is incorrectly aligned or 
overlapped by a non-object field.

最佳答案

将其视为 IntPtr,而不是字符串。

但是,当使用 IntPtr 时,一定要确保自己进行清理,因为您现在将使用非托管内存,因此 GC 不会帮助您,每次都会导致内存泄漏是时候传递这个结构了。

您很可能会想要使用 Marshal.PtrToStringUni 函数,正如 shf301 在另一个答案中所建议的那样。

关于c# - 如何在 C# 中创建此结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13598607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com