size_t浅析

size_t是一个用于表示数组索引和内存大小的类型,其设计目的是为了程序的移植性。它适应于系统的指针寻址范围,确保在不同架构上的正确性。在C/C++中,size_t常由sizeof运算符返回,并在多种头文件中定义。理解size_t的用意对于编写平台无关的代码至关重要。
摘要由CSDN通过智能技术生成

引子

在开始阅读linux内核或其它c/c++源码时,我们常常会遇到size_t这样的数据类型,往往我们并没有在意,就把它等价成了unsigned int型,也不影响我们的阅读。那为什么要定义这个新的数据类型呢,大多数人都知道是为了方便程序的移植,可是怎么就方便程序的移植了呢?请看下面的具体分析。

浅析

之所以定义size_t,是用来定义表示数组索引变量的数据类型,下面来看一个例子:

malloc (size_t n)
{
  return __libc_memalign (sizeof (double), n);
}

这个内存分配的函数大家肯定都十分熟悉,那大家有没有思考过n的取值范围呢?显然n不可能是负数,能否等于零我们现在也不关心,我们关心的是n最大可以是多少。如果n大于了系统指针变量的最大寻址范围,那么超过这个范围的地址就没有办法被访问到了。因此,n的范围最好适应于一个系统的指针变量寻址的最大范围。

最近,我看到了一篇文章,作者讲述了一种标记方法,来简明地表述不同目标平台下c语言数据类型的实现。该文章的作者页还没有找到这个标记的来源,这个标记语法甚至连一个名字都没有,但标记似乎很简单&

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值