使用malloc分配char数组

Nya*_*yan 15 c malloc sizeof c99 char

嗨,最近我在网上看到了很多代码(也在SO上),如:

   char *p = malloc( sizeof(char) * ( len + 1 ) );
Run Code Online (Sandbox Code Playgroud)

为什么sizeof(char)?这不是必要的,不是吗?或者只是风格问题?它有什么优势?

bra*_*jam 18

是的,这是一种风格问题,因为你希望sizeof(char)永远是一个风格.

另一方面,它sizeof(foo)在做一个时非常习惯malloc,最重要的是它使代码自我记录.

也许更适合维护.如果您要切换charwchar,则切换到

wchar *p = malloc( sizeof(wchar) * ( len + 1 ) );
Run Code Online (Sandbox Code Playgroud)

没有多想.转换声明char *p = malloc( len + 1 );需要更多的思考.这都是为了减少心理开销.

正如@Nyan在评论中建议的那样,你也可以做到

type *p = malloc( sizeof(*p) * ( len + 1 ) );
Run Code Online (Sandbox Code Playgroud)

对于零终止字符串和

type *p = malloc( sizeof(*p) * len ) );
Run Code Online (Sandbox Code Playgroud)

对于普通缓冲区.

  • 你不仅期望它是1,它被定义为如此.极少数明确定义其大小的项目之一. (4认同)
  • 哦,我的意思是sizeof(*p) (3认同)