ฉันเห็นสองรูปแบบการใช้งานsizeof
สำหรับการดำเนินการที่เกี่ยวข้องกับหน่วยความจำ (เช่นในmemset
หรือmalloc
):
sizeof(type)
และsizeof variable
หรือsizeof(variable)
คุณต้องการเลือกแบบใดหรือคุณใช้การผสมผสานระหว่างสองสไตล์และเมื่อใดที่คุณจะใช้แต่ละสไตล์ อะไรคือข้อดีข้อเสียของแต่ละสไตล์และเมื่อคุณใช้พวกเขา?
เป็นตัวอย่างฉันสามารถดูคู่ของสถานการณ์ต่อไปนี้ที่ลักษณะหนึ่งช่วยและอีกลักษณะหนึ่งไม่ได้:
เมื่อคุณทำให้ตัวชี้ไปทางผิด:
type *var;
...
memset(var, 0, sizeof var); /* oops */
เมื่อประเภทเปลี่ยนแปลง:
new_type var; /* changed from old_type to new_type */
...
memset(&var, 0, sizeof(old_type)); /* oops */