sizeof的返回值是size_t,而size_t是unsigned int,那么是不是说sizeof的返回值就是从0~4G呢?
linux gcc 实测:
sizeof(struct)在超出512M 时,将会溢出,只能得到超出部分的值。
比如有一个(512M+1)大小的struct,那么你将会只得到1!
但是具体原因我还没有搞清楚,google了一把也没有收获,哪位高手知道,烦请告知一声,多谢~
其他平台尚未测试,等测过了再说。
============
另一个关于sizeof的话题:
许多编译器对sizeof的计算是在编译期的,所以我们可以把sizeof当作一个常量来定义数组:
char arrChar[ sizeof(struct stA) ];
gcc下测试过了可以,不过它是肯定是可以通过的,因为gcc支持c99,而c99允许用变量指定数组长度,其他编译器下也要测试了再贴。