Tôi đã thấy hai kiểu sử dụng sizeof
cho các hoạt động liên quan đến bộ nhớ (chẳng hạn như trong memset
hoặc malloc
):
sizeof(type)
vàsizeof variable
hoặc làsizeof(variable)
Bạn thích kiểu nào hơn, hoặc bạn sẽ sử dụng kết hợp cả hai kiểu, và khi nào bạn sẽ sử dụng từng kiểu? Những ưu và nhược điểm của từng phong cách và khi bạn sử dụng chúng là gì?
Ví dụ, tôi có thể thấy các cặp tình huống sau đây trong đó một kiểu giúp và kiểu kia không:
Khi bạn nhận được con trỏ sai hướng:
type *var;
...
memset(var, 0, sizeof var); /* oops */
Khi loại thay đổi:
new_type var; /* changed from old_type to new_type */
...
memset(&var, 0, sizeof(old_type)); /* oops */