sizeof 作用于指针是可疑的
10.7.3 ID_sizeof_pointer
sizeof 作用于指针的结果是指针本身的大小,而不是指针指向对象的大小,sizeof 作用于指针属于常见笔误。
示例:
void foo(int* p) {
memset(p, 0, sizeof(p)); // Logic error
}
应改为:
void foo(int* p, int n) {
memset(p, 0, n * sizeof(*p)); // OK
}
其中 n 是 p 指向数组的元素个数。