首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么指向字符串文字后不能无指针()

为什么指向字符串文字后不能无指针()
EN

Stack Overflow用户
提问于 2015-08-22 00:04:22
回答 5查看 705关注 0票数 2

有一些关于我的问题的相关讨论,但没有关于我的问题的明确解释。

我认为我必须free()malloc()的任何东西,无论何时何地,但我必须这样做,以防止内存泄漏。因此,我有以下程序:

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
    int *ptr;

    ptr = malloc(256);

    if (ptr == NULL)    {
        printf("Out of memory\n");
        return 1;
    }

    *ptr = 10;

    printf("The value of PTR is:\t%d\n",*ptr);
    free(ptr);

    return 0;
}

我有一个指针,我动态分配了一些内存(256),然后我检查NULL字母I free()它。

在此之前,一切都是正常的:指针被动态地分配了一些内存,然后我free()了它。

现在我将使用一个char指针,在我将动态分配一些内存(256)之后,我将该指针指向一个字符串文字,假设是MICHI:

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
    char *ptr;

    ptr = malloc(256);

    if (ptr == NULL)    {
        printf("Out of memory\n");
        return 1;
    }

    ptr = "michi";
    printf("%s",ptr);

    free(ptr);

    return 0;
}

这里我做了一些错误的事情,因为如果我尝试free()它,它将不会工作,因为它碰巧我将释放一个非堆对象。

所以我在这里迷路了,因为我认为你所拥有的一切都是为了free()它。到底是什么使得指针在指向字符串文字之后不需要进行free()编辑

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32144812

复制
相关文章

相似问题

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