关于sizeof的最大值问题

来源:互联网 发布:足球意大利克德国知乎 编辑:程序博客网 时间:2024/06/05 15:54

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允许用变量指定数组长度,其他编译器下也要测试了再贴。

 

原创粉丝点击