如果有这么一个结构体
struct win_fd_set { u_int fd_count; SOCKET fd_array[1]; };
这么调用
win_fd_set * Set = (win_fd_set*)malloc(sizeof(win_fd_set) + sizeof(SOCKET) * 10);
它的内存会是什么样呢?
事实上,内存中会储存有11个SOCKET,并且可以通过Set->fd_array[10] ,Set->fd_array[9]这样来调用.因为内存是没有结构的,只要你足够大,随便怎么放.这种写法的适用情况比如用select io模型,套接字限制不能超过64个,而用这种方法,看着只绑定了一个套接字,
实际上就多了去了..