[英]Allocating char array using malloc
考慮以下行:
char *p = malloc( sizeof(char) * ( len + 1 ) );
為什么使用 sizeof(char)? 沒必要吧? 或者這只是風格問題?
它有什么優勢?
是的,這是風格問題,因為您希望sizeof(char)
始終是一個。
另一方面,在執行malloc
時使用sizeof(foo)
是一種習慣用法,最重要的是它使代碼自我記錄。
也許也更適合維護。 如果你從char
切換到wchar
,你會切換到
wchar *p = malloc( sizeof(wchar) * ( len + 1 ) );
沒有多想。 而轉換語句char *p = malloc( len + 1 );
需要更多的思考。 這一切都是為了減少精神開銷。
正如@Nyan 在評論中建議的那樣,你也可以這樣做
type *p = malloc( sizeof(*p) * ( len + 1 ) );
對於零終止字符串和
type *p = malloc( sizeof(*p) * len ) );
對於普通緩沖區。
它用於自我記錄操作。 該語言將字符定義為恰好是一個字節。 它沒有指定該字節中有多少位,因為某些機器具有 8、12、16、19 或 30 位最小可尋址單元(或更多)。 但是一個字符總是一個字節。
規范規定字符為 1 字節,因此它是嚴格可選的。 我個人總是出於一致性目的包含sizeof
,但這並不重要
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.