Posted on 2011-06-18 21:53
RTY 閱讀(399)
評論(0) 編輯 收藏 引用 所屬分類:
C/C++ 、
轉載隨筆
概述
size_t 類型定義在cstddef頭文件中,該文件是C標準庫的頭文件
stddef.h的C++版。它是一個與機器相關的unsigned類型,其大小足以保證存儲內(nèi)存中對象的大小。 例如bitset的size操作返回bitset對象中二進制位中的個數(shù),返回值類型是size_t。 例如在用下標訪問元素時,vector使用vector::
size_type作為下標類型,而
數(shù)組下標的正確類型則是size_t。
來源
size_t是標準C庫中定義的,應為unsigned int。 數(shù)據(jù)類型"socklen_t"和int應該具有相同的長度。否則就會破壞 BSD套接字層的填充.POSIX開始的時候用的是size_t, Linus Torvalds(他希望有更多的人,但顯然不是很多) 努力向他們解釋使用size_t是完全錯誤的,因為在64位結構中 size_t和int的長度是不一樣的,而這個參數(shù)(也就是accept函數(shù)的第三參數(shù))的
長度必 須和int一致,因為這是BSD套接字接口標準.最終POSIX的那幫家伙找到了解決的辦法,那就是創(chuàng)造了一個新的類 型"socklen_t".Linux Torvalds說這是由于他們發(fā)現(xiàn)了自己的錯誤但又不好意思向大家伙兒承認,所以另外創(chuàng)造了一個新的數(shù)據(jù)類型 。 在C++中,設計 size_t 就是為了適應多個平臺的 。size_t的引入增強了程序在不同平臺上的可移植性。size_t是針對系統(tǒng)定制的一種數(shù)據(jù)類型,一般是整形,因為C/C++標準只定義一最低的位 數(shù), 而不是必需的固定位數(shù)。而且在內(nèi)存里,對數(shù)的高位對齊存儲還是低位對齊存儲各系統(tǒng)都不一樣。為了提高代碼的可移植性,就有必要定議這樣的數(shù)據(jù)類型。一般這 種類型都會定義到它具體占幾位內(nèi)存等。當然,有些是編譯器或系統(tǒng)已經(jīng)給定義好的。經(jīng)測試發(fā)現(xiàn),在32位系統(tǒng)中size_t是4字節(jié)的,而在64位系統(tǒng) 中,size_t是8字節(jié)的,這樣利用該類型可以增強程序的可移植性。