搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 关于一个内存使用的问题
标题:
关于一个内存使用的问题
只看楼主
Mycr
等 级:
新手上路
帖 子:203
专家分:0
注 册:2006-9-18
楼主
问题点数:0 回复次数:8
关于一个内存使用的问题
char *str;
str=(char *)malloc(sizeof(char));
printf("%d\n",sizeof(char));这里只分配一个单元,后面为什么可以输入很多字符呢
if(NULL==str)
{
printf("\nNo enough memory \n");
exit(1);
}
printf("input the string:");
gets(str);
puts(str);
搜索更多相关主题的帖子:
内存
str
char
printf
sizeof
2008-01-14 21:53
xianshizhe111
等 级:
新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
第
2
楼
得分:0
这个问题我也遇到不少
期待中
2008-01-14 22:06
cosdos
来 自:ShangHai
等 级:
蜘蛛侠
威 望:
6
帖 子:2109
专家分:1385
注 册:2007-6-19
第
3
楼
得分:0
C 无法检测出这个错误,所以指针是危险的,
这是你对指针的了解不够。
指针是访问内存最直接的方式。
str 指向内存中的一个字节,内存是连续的,str 位置后面还有内存空间。但程序访问这些空间是一种不安全的行为。
—>〉Sun〈<—
2008-01-17 01:10
cosdos
来 自:ShangHai
等 级:
蜘蛛侠
威 望:
6
帖 子:2109
专家分:1385
注 册:2007-6-19
第
4
楼
得分:0
gets() 接受一个char 指针参数。
—>〉Sun〈<—
2008-01-17 01:13
keny616
来 自:湖南
等 级:
新手上路
帖 子:6
专家分:0
注 册:2008-1-6
第
5
楼
得分:0
回答的好像有道理.
2008-01-17 15:08
sunkaidong
来 自:南京师范大学
等 级:
贵宾
威 望:
12
帖 子:4496
专家分:141
注 册:2006-12-28
第
6
楼
得分:0
我也来小分析一下:
char *str;//指向一个字符的地址,可以当数组用相当于str{};
str=(char *)malloc(sizeof(char));开辟了一个char的空间,返回给str;
printf("%d\n",sizeof(char));
if(NULL==str)
{
printf("\nNo enough memory \n");
exit(1);
}
printf("input the string:");
gets(str);这里的意思是从上面开辟的char地址开始送一个字符串,但是str还是可以当数组用的,整个过程都没有做限制
puts(str);得到字符串
[[italic] 本帖最后由 sunkaidong 于 2008-1-17 15:34 编辑 [/italic]]
2008-01-17 15:32
xianshizhe111
等 级:
新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
第
7
楼
得分:0
C代吗能通过编译 但实际上输入的其它字符已经存储在与它相临的地址空间
其它的地址如有数据(将被覆盖)
2008-01-17 16:00
Mycr
等 级:
新手上路
帖 子:203
专家分:0
注 册:2006-9-18
第
8
楼
得分:0
那怎么能用动态分存内存的方式控制输入的字符呢?
2008-01-17 20:49
forever74
来 自:CC
等 级:
贵宾
威 望:
49
帖 子:1636
专家分:3940
注 册:2007-12-27
第
9
楼
得分:0
这就是为什么说gets不安全的原因
2008-01-17 21:31
9
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-197475-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.278796 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved