免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3254 | 回复: 4
打印 上一主题 下一主题

[C] 字符串变量能无限长么?是怎么放置的 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-04 10:21 |只看该作者 |倒序浏览
如果是一个int,那么定义变量的时候,空间就分配好了,是sizeof(int)
如果是一个字符串变量
char str1[] = "string variable";
我也任意加长他,比如
strcat(str1, "jia chang ,jia chang");
那样我且不关心栈里面是不是放得下。
新加的字符内容,是直接放在旧内容后面么?
如果新加的字符比较大,内存空间后面有别的东西了,不就溢出了?
应该不会有这个情况,是不是会采用类似指针链表的,跳到另一块空闲的空间继续存放呢?程序有自己的处理机制。

我可能比较较真,请大神说说自己的想法。

论坛徽章:
1
丑牛
日期:2013-09-29 19:04:50
2 [报告]
发表于 2014-04-04 10:29 |只看该作者
本帖最后由 solu 于 2014-04-04 10:36 编辑

=================

论坛徽章:
0
3 [报告]
发表于 2014-04-04 10:30 |只看该作者
char str1[] = "string variable";
这个初始化的时候str1长度已经确定, strcat(str1, "jia chang ,jia chang")只会造成溢出

论坛徽章:
0
4 [报告]
发表于 2014-04-04 11:21 |只看该作者
谢谢,你说的我试了,是溢出。

论坛徽章:
0
5 [报告]
发表于 2014-04-07 21:38 |只看该作者
char a[]="123^^^^^…………………………"

再strcpy的话可能会**栈。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP