字符串如何释放
假如我将一个字符指针初始化为指向一个字符串,然后我又将他指向一个新的字符串, 原来那个字符串会自动释放吗?(我猜不会, 因为C语言没有垃圾回收机制)
假如不会, 又该怎么释放呢?
#include<stdio.h>
int main()
{
char *str = "旧字符串";
printf("原来str = %s", str);
str = "新字符串";
printf("\n现在str = %s\n\n", str);
//"旧字符串"释放了吗?
return 0;
}
会的。系统分配的内存在函数退出时自动释放。手动malloc的内存需要手动free alexw_h264 发表于 2020-2-23 14:31
会的。系统分配的内存在函数退出时自动释放。手动malloc的内存需要手动free
也就是说函数运行期间字符串不会释放吗 怎么手动释放呢 ZXU 发表于 2020-2-23 14:36
也就是说函数运行期间字符串不会释放吗 怎么手动释放呢
这个字符串会在整个程序运行期间都存在,没办法手动释放
举例:
手动申请: str = (char *)malloc(10*sizeof(char));
手动释放:free(str)
严格的做法,还需要判断str是否有效
页:
[1]