Vâng, đó là vấn đề về phong cách, bởi vì bạn mong đợi sizeof(char)
luôn là một.
Mặt khác, rất thành ngữ khi sử dụng sizeof(foo)
khi thực hiện malloc
và quan trọng nhất là mã tự tạo tài liệu.
Cũng tốt hơn để bảo trì, có lẽ. Nếu bạn được chuyển từ char
để wchar
, bạn muốn chuyển sang
wchar *p = malloc(sizeof(wchar) * (len + 1));
mà không cần nhiều suy nghĩ. Trong khi chuyển đổi tuyên bố char *p = malloc( len + 1 );
sẽ yêu cầu nhiều suy nghĩ hơn. Đó là tất cả về việc giảm chi phí tinh thần.
Và như @Nyan gợi ý trong một chú thích, bạn cũng có thể làm
type *p = malloc(sizeof(*p) * (len + 1));
cho chuỗi zero-chấm dứt và
type *p = malloc(sizeof(*p) * len));
cho bộ đệm thông thường.
Bản sao của http://stackoverflow.com/questions/1011806/is-it-necessary-to-multiply-by-sizeof-char-when -manipulating-memory mặc dù tôi không đồng ý với câu trả lời được chấp nhận ở đó (tôi thích bỏ qua sizeof (char)) – user85509