【C趣题】gets()函数问题!
c语言吧
全部回复
仅看楼主
level 14
楼兰商客 楼主

Q:以下代码有个被隐藏住的问题,你能找到它吗?
01 #include<stdio.h>
02
03 int main(void)
04 {
05 char buff[10];
06 memset(buff,0,sizeof(buff));
07
08 gets(buff);
09
10 printf("\n The buffer entered is [%s]\n",buff);
11
12 return 0;
13 }
大家找找看,这段代码有一个隐藏问题!
2012年10月20日 10点10分 1
level 11
A: 找不到
2012年10月20日 10点10分 2
level 7
缓冲区溢出漏洞 buff太小
2012年10月20日 10点10分 3
level 9
没有检测是不是有足够的空间来拷贝数据,用fgets()就好了
2012年10月20日 10点10分 4
level 11
[打酱油]缓冲区溢出.. c11已经没有gets了..
2012年10月20日 10点10分 5
level 8
来看看又没用好东西,貌似很有用呀、
2012年10月20日 10点10分 6
level 14
楼兰商客 楼主
你们很牛b啊 这么快就找到了,那再来一个!
Q:请问以下代码有内存泄露吗?
01 #include<stdio.h>
02
03 void main(void)
04 {
05 char *ptr = (char*)malloc(10);
06
07 if(NULL == ptr)
08 {
09 printf("\n Malloc failed \n");
10 return;
11 }
12 else
13 {
14 // Do some processing
15 }
16
17 return;
18 }

2012年10月20日 10点10分 7
没有free
2012年10月20日 10点10分
看清楚问题哦,是没有free,但是会造成内存泄露么?
2012年10月20日 10点10分
回复 楼兰商客 :如果分配不成功就不会。。成功会吧
2012年10月20日 14点10分
level 11
百度“
C语言学习之12个小问答”[瞌睡]
2012年10月20日 10点10分 8
还是硬姐犀利
2012年10月20日 10点10分
V5..
2012年10月20日 10点10分
回复 Hope_20121221_ :V5..
2012年10月20日 11点10分
回复 龘籹 :一下就终止了楼主的水..[88]
2012年10月20日 11点10分
level 13
用gets不安全啊。。。缓冲区溢出神马的
2012年10月20日 14点10分 9
1