还是一个关于c++内存指针的问题分析

如果有这么一个结构体

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个,而用这种方法,看着只绑定了一个套接字,

实际上就多了去了..

原文地址:https://www.cnblogs.com/wangshaowei/p/8588536.html