void free(void *ptr)调用后ptr的值是什么

在C语言中,调用free(ptr)释放内存后,ptr仍指向原来的内存地址,但该内存已被标记为可擦除。为了避免野指针,应将ptr赋值为NULL。未释放前,printf能按数据类型打印;释放后,没有数据类型限制的内存,printf无法正常打印,故free后需手动将ptr置为NULL。
摘要由CSDN通过智能技术生成

使用后该指针变量ptr一定要重新指向NULL,防止野指针出现,有效 规避误操作。比如如下:

当然这是C版的;不全但是最后结果看截图。可以知道ptr指向还是原来的内存单元,只不过是该内存单元被标示可擦除了。

typedef struct data{
    int year;
    char *name;
}Data;

Data *pd=malloc(sizeof(Data));
    pd->name="pengrong";
    pd->year=32;
    printf("%s\t%d\n",pd->name,pd->year);
    free(pd);
    printf(&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值