问题描述
- 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
", s1);
getchar();
}
我想把s2和s3的内容放入s1中,然后释放s2,s3的空间。两句free哪一句都是会报错的。求教这种问题如何解决。
解决方案
"bbb", "ccc"是字符字面量,是存放在静态数据区的,所以并不需要释放空间,也无法释放。
解决方案二:
malloc和free需要成对使用。free用来释放在堆上的内存。栈上、静态存储区都不要也不能释放。
解决方案三:
恰恰你s1没有释放。
解决方案四:
Malloc和free成对存在,没malloc何来free
解决方案五:
只有在堆区的数据才需要去free的
解决方案六:
C语言字符指针和字符数组
关于C语言中的字符数组和字符指针
20110410-C语言的字符串和指向字符的指针(字符指针)
时间: 2024-11-02 03:07:17