Posted on 2011-06-18 21:53
RTY 閱讀(399)
評論(0) 編輯 收藏 引用 所屬分類:
C/C++ 、
轉載隨筆
概述
size_t 類型定義在cstddef頭文件中,該文件是C標準庫的頭文件
stddef.h的C++版。它是一個與機器相關的unsigned類型,其大小足以保證存儲內存中對象的大小。 例如bitset的size操作返回bitset對象中二進制位中的個數,返回值類型是size_t。 例如在用下標訪問元素時,vector使用vector::
size_type作為下標類型,而
數組下標的正確類型則是size_t。
來源
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字節的,這樣利用該類型可以增強程序的可移植性。