您的位置:首页 > 其它

可以无限输入字符字符的程序

2013-03-12 18:11 218 查看
今天发现一个奇怪的现象,写了一个c程序,用gcc编译器编译,居然没有报错,而且还能正常运行

看代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
char *p = (char*)malloc(1); //申请了一个很小的空间
printf("len is %d\n", strlen(p));//打印p所指的大小
printf("addr:0x%x\n", (int)p);//打印p所指的内存地址
gets(p);//从键盘读入一行字符
//scanf("%s", p);//或者用scanf来读,结果一样
printf("len is %d\n", strlen(p));//打印读入字符后的长度
printf("addr:0x%x\n", (int)p);//打印读入字符后的内存地址
printf("%s\n", p);//打印读入的内容
free(p);
p = NULL;
return 0;
}


虽然我申请了很小的空间(一个字节),但是p还是可以接收我输入的任意长的字符串,并且可以看到p所指的空间确实是增大了!!

运行结果:



这能不能算gcc的一个bug?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐