当使用 malloc 和进行类似的内存操作时,我能否依赖于 sizeof(char) 总是为1?
例如,我需要为 N 个 char 类型的元素分配内存。是否需要乘以 sizeof(char):
char* buffer = malloc( N * sizeof( char ) );
我是否可以相信sizeof(char)始终为1,直接跳过乘法运算呢?
char* buffer = malloc( N );
我完全理解sizeof
在编译期间被评估,编译器甚至可能会将乘法优化掉,因此性能惩罚将是最小的,很可能为零。
我主要关心代码的清晰度和可移植性。对于char
类型,这个乘法操作是否有必要?