引子
在开始阅读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语言数据类型的实现。该文章的作者页还没有找到这个标记的来源,这个标记语法甚至连一个名字都没有,但标记似乎很简单&