none
如何计算结构体WLAN_AVAILABLE_NETWORK_LIST的大小,sizeof不行 RRS feed

  • 问题

  • 由于结构体中含有数组,故sizeof不行,如果纯计算结构体大小实在太过于麻烦,请问有比较好的方法么?
    2011年5月17日 1:28

答案

  • typedef struct _WLAN_AVAILABLE_NETWORK_LIST {
    DWORD dwNumberOfItems;
    DWORD dwIndex;
    WLAN_AVAILABLE_NETWORK Network[1]; } WLAN_AVAILABLE_NETWORK_LIST,
    *PWLAN_AVAILABLE_NETWORK_LIST;
    变长结构体,其实就是为了分配一段连续的的内存,减少内存的碎片化,
    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年5月17日 1:41
    版主
  • 我觉得应该是两个DWORD的大小再加上sizeof(WLAN_AVAILABLE_NETWORK)*(dwNumberOfItems-1)

    你可以去试试看。

    你还可以看看这篇文章,是讲如何计算struct大小的。希望对你有帮助哦!

    2011年5月20日 9:19

全部回复

  • typedef struct _WLAN_AVAILABLE_NETWORK_LIST {
    DWORD dwNumberOfItems;
    DWORD dwIndex;
    WLAN_AVAILABLE_NETWORK Network[1]; } WLAN_AVAILABLE_NETWORK_LIST,
    *PWLAN_AVAILABLE_NETWORK_LIST;
    变长结构体,其实就是为了分配一段连续的的内存,减少内存的碎片化,
    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年5月17日 1:41
    版主
  • 那怎么计算大小呢?

    sizeof(WLAN_AVAILABLE_NETWORK_LIST)+sizeof(WLAN_AVAILABLE_NETWORK)*(dwNumberOfItems-1)?

    2011年5月17日 2:11
  • 我觉得应该是两个DWORD的大小再加上sizeof(WLAN_AVAILABLE_NETWORK)*(dwNumberOfItems-1)

    你可以去试试看。

    你还可以看看这篇文章,是讲如何计算struct大小的。希望对你有帮助哦!

    2011年5月20日 9:19