我看到人们经常编写 C 代码,例如:
char *ptr = malloc(sizeof(char)*256);
这真的有必要吗?标准说sizeof(char)==1
根据定义,这样写是不是有意义:
char *ptr = malloc(256);
是的,C 定义了sizeof(char)
始终为 1(C++ 也是如此)。
尽管如此,作为一般规则,我建议如下:
char *ptr = malloc(256 * sizeof(*ptr));
这样,当你的老板说:“哦,顺便说一句,我们刚刚收到来自中国的订单,所以我们需要尽快处理所有三个中文字母”时,你可以将其更改为:
wchar_t *ptr // ...
其余的可以保持不变。考虑到你在试图合理地处理 i18n 时会遇到大约 1000 万个令人头疼的问题,即使消除一些也是值得的。当然,这是假设通常情况下您的char
s 实际上是用来保存字符的——如果它只是某种原始缓冲区,并且您确实需要 256 字节的存储空间,无论有多少(或少数)字符,您可能应该坚持使用malloc(256)
并完成它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)