今天,看到一个帖子,觉得有意思,贴出来。 #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { int i = 1; char buf[4]; strcpy(buf, "AAAA"); printf("%d\n", i); return 0; } 由于buf分配的内存不够,strcpy的时候,会把'\0'给i,因此,输出会是: 0 不改变代码的情况下,怎么能不出现这种错误并且给出预警呢? 可以加个高优化,使得 i 被优化为常量。比如gcc下面的-O2 TIY