按理说,不知道s1的内存大小,需要用strlen(s2)+1来给s1分配内存。但当我给s1赋上“a”后,s1应该只有两个字符的内存,但是程序仍然能够运行。内存分配的机制是什么?内存不够还可以再补充吗?
如果一个字符串内存不足可以补充吗
按理说,不知道s1的内存大小,需要用strlen(s2)+1来给s1分配内存。但当我给s1赋上“a”后,s1应该只有两个字符的内存,但是程序仍然能够运行。内存分配的机制是什么?内存不够还可以再补充吗?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 广大菜鸟 2021-09-23 21:26关注
char s1[]="a";
给它分好内存位置了,但是你如果对后面(s1+2)的指针进行操作,实际上已经是内存溢出了,理论上是不允许的。
你可以用动态数组的方式,calloc()这个函数可以扩充,重新分配个内存空间给这个数组本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 pic16F877a单片机的外部触发中断程序仿真失效
- ¥15 Matlab插值拟合差分微分规划图论
- ¥15 keil5 target not created
- ¥15 C/C++数据与算法请教
- ¥15 怎么找志同道合的伙伴
- ¥20 如何让程序ab.eXe自已删除干净硬盘里的本文件自己的ab.eXe文件
- ¥50 爬虫预算充足,跪巨佬
- ¥15 滑块验证码拖动问题悬赏
- ¥15 Wanted but not invoked:Actually, there were zero interactions with this moc
- ¥20 怎么驱动tb6612