歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux ssize_t與size_t

Linux ssize_t與size_t

日期:2017/2/28 16:13:29   编辑:Linux教程

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

Copyright © Linux教程網 All Rights Reserved