C语言中的字符指针操作问题,如何释放字符指针空间?

源码如下:
#include
#include
#include
void main()
{
char s1;
char *s2 = "bbb";
char *s3 = "ccc";
s1 = (char
)malloc(sizeof(s2));
strcpy(s1, s2);
strcat(s1, s3);
//free(s2);
//free(s3);
printf("%s\n", s1);
getchar();
}
我想把s2和s3的内容放入s1中,然后释放s2,s3的空间。两句free哪一句都是会报错的。求教这种问题如何解决。

"bbb", "ccc"是字符字面量,是存放在静态数据区的,所以并不需要释放空间,也无法释放。

malloc和free需要成对使用。free用来释放在堆上的内存。栈上、静态存储区都不要也不能释放。

恰恰你s1没有释放。

Malloc和free成对存在,没malloc何来free

只有在堆区的数据才需要去free的