linux??ssize_t與size_t_阿頔就是阿Luke_新浪博客
linux??ssize_t與size_t
(2012-07-09 14:59:26)
ssize_t 是signed size_t,
而 size_t 是標準C庫中定義的,應為unsigned
int。
socket_t :
數據類型"socklen_t"和int應該具有相同的長度.否則就會破壞 BSD套接字層的填充.POSIX開始的時候用的是size_t,
Linus Torvalds(他希望有更多的人,但顯然不是很多) 努力向他們解釋使用size_t是完全錯誤的,因為在64位結構中
size_t和int的長度是不一樣的,而這個參數(也就是accept函數的第三參數)的長度必須和int一致,因為這是BSD套接字接口標準.最終POSIX的那幫家伙找到了解決的辦法,那就是創造了一個新的類型"socklen_t".Linux
Torvalds說這是由于他們發現了自己的錯誤但又不好意思向大家伙兒承認,所以另外創造了一個新的數據類型??
為了增強程序的可移植性,便有了size_t,它是為了方便系統之間的移植而定義的,不同的系統上,定義size_t可能不一樣。
在32位系統上 定義為 unsigned int?
也就是說在32位系統上是32位無符號整形在64位系統上 定義為 unsigned long?
也就是說在64位系統上是64位無符號整形size_t一般用來表示一種計數,比如有多少東西被拷貝等。例如:sizeof操作符的結果類型是size_t,?
該類型保證能容納實現所建立的最大對象的字節大小。?
它的意義大致是“適于計量內存中可容納的數據項目個數的無符號整數類型”。?
所以,它在數組下標和內存管理函數之類的地方廣泛使用。而ssize_t:這個數據類型用來表示可以被執行讀寫操作的數據塊的大小.它和size_t類似,但必需是signed.意即:它表示的是sign
size_t類型的。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
