关于sizeof的最大值问题

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值