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

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