今天,看到一个帖子,觉得有意思,贴出来。
#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
阅读(782) | 评论(0) | 转发(0) |