问题:

1、

  1. // char * arr = (char *)malloc(sizeof(s) + 1);
  2. char * arr = (char *)malloc(sizeof(char) * (length + 1));

注释里的malloc空间分配的是8加上1,因为不确定是否跟s是char类型相关
所以更好的写法还是下面那种(记得要有个位置放’\0’)
2、

  1. *(zhen+length-1) = '\0';

C语言的字符串后面需要以\0结尾,否则会溢出

对比:

1、
我的:
image.png
别人:
image.png
最大的区别应该就是对返回指针的取值,逐个增加较直接地址增加慢