u010756442
翯熇翀虓
2015-12-21 03:01
采纳率: 50%
浏览 1.8k
已采纳

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哪一句都是会报错的。求教这种问题如何解决。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • fjxyyzg3
    Lehary 2015-12-21 03:20
    已采纳

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

    点赞 评论
  • caozhy

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

    点赞 评论
  • caozhy

    恰恰你s1没有释放。

    点赞 评论
  • fanleung
    fanleung 2015-12-21 04:59

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

    点赞 评论
  • q3733353520

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

    点赞 评论

相关推荐