ZXU 发表于 2020-2-23 13:44:39

字符串如何释放

假如我将一个字符指针初始化为指向一个字符串,
然后我又将他指向一个新的字符串, 原来那个字符串会自动释放吗?(我猜不会, 因为C语言没有垃圾回收机制)

假如不会, 又该怎么释放呢?

#include<stdio.h>

int main()
{
    char *str = "旧字符串";
    printf("原来str = %s", str);

    str = "新字符串";
    printf("\n现在str = %s\n\n", str);
    //"旧字符串"释放了吗?

    return 0;
}

alexw_h264 发表于 2020-2-23 14:31:29

会的。系统分配的内存在函数退出时自动释放。手动malloc的内存需要手动free

ZXU 发表于 2020-2-23 14:36:50

alexw_h264 发表于 2020-2-23 14:31
会的。系统分配的内存在函数退出时自动释放。手动malloc的内存需要手动free

也就是说函数运行期间字符串不会释放吗 怎么手动释放呢

人造人 发表于 2020-2-23 14:47:25

ZXU 发表于 2020-2-23 14:36
也就是说函数运行期间字符串不会释放吗 怎么手动释放呢

这个字符串会在整个程序运行期间都存在,没办法手动释放

alexw_h264 发表于 2020-2-23 16:38:55

举例:

手动申请: str = (char *)malloc(10*sizeof(char));
手动释放:free(str)

严格的做法,还需要判断str是否有效
页: [1]
查看完整版本: 字符串如何释放