首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >const char*应该在C中释放吗?

const char*应该在C中释放吗?
EN

Stack Overflow用户
提问于 2022-07-26 13:29:53
回答 3查看 213关注 0票数 2

请考虑以下代码。我要问的是,如果这是正确的,是否有什么遗漏。还有别的办法可以做吗。

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
const char *getOrder (const char *day)
{
    if (strncmp(day, "Monday", 7) == 0) {
        return "first";
    } else if (strncmp(day, "Tuesday", 7) == 0) {
        return "second";
    } else if (strncmp(day, "Wednesday", 9) == 0) {
        return "third";
    } else if (strncmp(day, "Thursday", 8) == 0) {
        return "forth";
    } else if (strncmp(day, "Friday", 6) == 0) {
        return "fifth";
    } else if (strncmp(day, "Saturday", 8) == 0) {
        return "sixth";
    } else if (strncmp(day, "Sunday", 6) == 0) {
        return "seventh";
    } else
        return NULL;
}
int main()
{
    const char* str = NULL;
    str = getOrder ("Monday");
    printf("str : %s\n", str);
    return 0;
}
EN

Stack Overflow用户

发布于 2022-07-26 14:14:48

结论是否定的。

原因是free()应该用作malloc()、calloc()或realloc()的合作伙伴。或者说,那些alloc函数只返回一个指针,那么它是否可以由free()回收。

一个附加的原因是,您在代码中编写的所有字符串都分配在.rodata节中,这意味着这些字符串加载在内存空间中,您不能编辑而只能读取,所以即使存在释放它们的方法,您仍然不能使用内存空间。

票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73124321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档