簡體   English   中英

使用 malloc 分配字符數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM