size_t是標準C庫中定義的,應為unsigned int。
數據類型"socklen_t"和int應該具有相同的長度。否則就會破壞 BSD套接字層的填充.POSIX開始的時候用的是size_t, Linus Torvalds(他希望有更多的人,但顯然不是很多) 努力向他們解釋使用size_t是完全錯誤的,因為在64位結構中 size_t和int的長度是不一樣的,而這個參數(也就是accept函數的第三參數)的長度必須和int一致,因為這是BSD套接字接口標準.最終POSIX的那幫家伙找到了解決的辦法,那就是創造了一個新的類型"socklen_t".Linux Torvalds說這是由于他們發現了自己的錯誤但又不好意思向大家伙兒承認,所以另外創造了一個新的數據類型 。
在C++中,設計 size_t 就是為了適應多個平臺的 。size_t的引入增強了程序在不同平臺上的可移植性。size_t是針對系統定制的一種數據類型,一般是整型,因為C/C++標準只定義一最低的位數,而不是必需的固定位數。而且在內存里,對數的高位對齊存儲還是低位對齊存儲各系統都不一樣。為了提高代碼的可移植性,就有必要定議這樣的數據類型。一般這種類型都會定義到它具體占幾位內存等。當然,有些是編譯器或系統已經給定義好的。經測試發現,在32位系統中size_t是4字節的,而在64位系統中,size_t是8字節的,這樣利用該類型可以增強程序的可移植性。
一個基本的無符號整數的C / C + +類型。 它是sizeof操作符返回的結果類型。 該類型的大小是選擇,因此,它可以存儲在理論上是可能的任何類型的數組的最大大小。 在32位系統為size_t將采取32位和64位 - 64位。 換句話說,一個指針可以被安全地放進為size_t類型(一個例外是類的函數指針,但是這是一個特殊的情況下)。 為size_t類型通常用于循環,數組索引,大小的存儲和地址運算。 雖然為size_t可以存儲一個指針,它是更好地使用另一個unsinged整數類型uintptr_t形式,目的(它的名字反映了它的能力)。 在某些情況下,使用為size_t類型是更有效,比使用更無符號類型的程序員習慣性安全。
size_t是一個無符號整數memsize基地型的C / C + +語言的標準庫中定義的。 此類型在C頭文件stddef.h,在文件cstddef中所述的C + +。 位于頭文件stddef.h中定義的類型在全局命名空間,而cstddef地方在命名空間std為size_t類型。 由于C語言的標準頭文件stddef.h納入的兼容性的目的,在這些方案中,您可以在全局命名空間的類型的C + +程序(:為size_t,為size_t)和命名空間std(STD::為size_t)。
============================
主要是為了可移植用的
typedef unsigned long size_t;
typedef short pid_t;
在其他平臺上有可能是 typedef unsigned int/long long size_t, typedef long/int pid_t等等,,
這樣就可以直接用size_t pid_t定義變量了,
解釋以下pid_t的用法:
主要用在linux c下進程管理中的,用它來表示進程的id類型,即表示進程表的索引(進程表里是進程id類型)