如果一个字符串内存不足可以补充吗

img


按理说,不知道s1的内存大小,需要用strlen(s2)+1来给s1分配内存。但当我给s1赋上“a”后,s1应该只有两个字符的内存,但是程序仍然能够运行。内存分配的机制是什么?内存不够还可以再补充吗?

char s1[]="a";
给它分好内存位置了,但是你如果对后面(s1+2)的指针进行操作,实际上已经是内存溢出了,理论上是不允许的。
你可以用动态数组的方式,calloc()这个函数可以扩充,重新分配个内存空间给这个数组

你这样属于是越界访问,会造成不可预知后果。大型程序都是这种情况会造成不稳定,很奇怪的崩溃。要禁止。有帮助请采纳谢谢!