0
我想复制addrinfo结构(只需复制它的所有字节),但是当挂钩时,我的更改导致主机应用程序中的内存损坏。addrinfo结构的大小
我的代码也很简单:
byte[] addressInfoBytes = new byte[32];
Marshal.Copy(addressInfoAddress, addressInfoBytes, 0, addressInfoBytes.Length);
newAddressInfoAddress = GCHandle.Alloc(addressInfoBytes, GCHandleType.Pinned).AddrOfPinnedObject();
我认为这是因为32是不是这个结构的正确尺寸。 我计算基于这个定义在MSDN上这个号码:
typedef struct addrinfo {
int ai_flags;
int ai_family;
int ai_socktype;
int ai_protocol;
size_t ai_addrlen;
char *ai_canonname;
struct sockaddr *ai_addr;
struct addrinfo *ai_next;
} ADDRINFOA, *PADDRINFOA;
你有关于这个结构的正确大小和我做什么不正确任何想法?
非常感谢您的时间。
此结构用于什么?你确定你没有试图访问已经在托管对等项目中提供的本地土地吗? –