linux ssize_t與size_t

來源:互聯網
上載者:User

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類型的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.