char arr[] = "The secret of success is constancy to purpose";
long a = strlen(arr);
char *p = malloc(a +1);
p = arr;
*(p+a) = '\0';
printf("%s",p);
free(p);
p = NULL;
没有下面的内存释放语句是没有问题的,加上之后就出现了问题
char arr[] = "The secret of success is constancy to purpose";
long a = strlen(arr);
char *p = malloc(a +1);
p = arr;
*(p+a) = '\0';
printf("%s",p);
free(p);
p = NULL;
没有下面的内存释放语句是没有问题的,加上之后就出现了问题
p = arr;
你这样把p的地址修改了,这样后面free的时候就会有问题
你应该用strcpy(p, arr)来复制内容