【发布时间】:2010-04-20 17:22:55
【问题描述】:
今天早上我们发现了一段导致库调用崩溃的旧代码。
struct fred
{
int a;
int b;
int c;
};
fred fred[MAX_SIZE+1];
memset( fred, 0, sizeof(fred) * MAX_SIZE+1 );
看来 sizeof(fred) 可能是整个数组大小,而不是结构大小,因为它覆盖了大量内存。
它在几个不同的系统上编译时没有警告的事实似乎很奇怪。
对于这种类型和变量名冲突的情况是否有正确的语义? 或者这是某种未定义的行为?还是只是一个缺陷?
【问题讨论】:
-
代码的真正含义是什么? 它说您组织中的某个人需要严厉的谈话。谁认为这是个好主意?
-
@rlbond - 编码员早已不在,但他的记忆犹存。
-
我觉得有趣的是,“EvilTeach”会发布这种邪恶的代码...... :)