错误使用sizeof
操作符的一个例子是试图检查指针边界但方法错误。下例为整数数组分配内存,然后把每个元素初始化为0:
int buffer[20];
int *pbuffer = buffer;
for(int i=0; i<sizeof(buffer); i++) {
*(pbuffer++) = 0;
}
不过,sizeof(buffer)
表达式返回了80,因为缓冲区长度以字节计是80(20乘以4字节每元素)。for
循环执行了80次而不是20次,这很可能会导致内存访问异常,从而终止应用程序。可以在for
表达式的测试条件中用sizeof(buffer)/sizeof(int)
来避免这个问题。