Chinaunix首页 | 论坛 | 博客
  • 博客访问: 500935
  • 博文数量: 53
  • 博客积分: 4150
  • 博客等级: 上校
  • 技术积分: 825
  • 用 户 组: 普通用户
  • 注册时间: 2005-10-17 08:51
文章分类

全部博文(53)

文章存档

2011年(8)

2010年(28)

2009年(13)

2008年(4)

我的朋友

分类: C/C++

2010-06-12 20:07:47

  今天,看到一个帖子,觉得有意思,贴出来。

#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
阅读(743) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~