2016-05-23 40 views
0

例如,使用size_t而不是unsigned int有沒有優勢?

int len1 = strlen(string);

爲size_t LEN1 = strlen的(字符串1)

是否使用的size_t使在存儲器中的編譯器行爲或代碼的運行時間或差的任何差異? 我完全知道差異,這在以前在另一個線程中得到了回答,但我擔心RAM的行爲。

回答

1

size_t未簽名,而int已簽名。此外,在某些平臺上,SIZE_MAX可能會大於sizeof(int)。因此,要生成便攜式代碼,您應該使用size_t(請參閱第7.1.3.3節)。

數據類型:爲size_t

這是用來表示對象的大小的無符號整數類型。 sizeof運算符的結果是這種類型,並且函數(如malloc(請參閱Unconstrained Allocation)和memcpy (請參見複製字符串和數組)接受此類型的參數爲 指定對象大小。在使用GNU C庫的系統上,這將是 unsigned int或unsigned long int。

source

+0

因此,在生成的bin文件的內存**中會出現**差異(我正面臨着我的MC的內存限制)?感謝你的回答!! – Chaitanya

2

size_t可存儲最大尺寸的陣列可以得到的,因爲它基本上可以得到那樣大的可尋址內存空間。

unsigned int僅由其最小範圍(0至65535)定義,但可能更大。例如,你期望它在32位機器上是32位的。

相關問題