指针p被free之后变成了什么值,还有值吗?
#include<stdio.h>#include<stdlib.h>intmain(){int*p;inta=10;p=(int*)malloc(sizeof(int)...
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *p;
int a = 10;
p = (int *)malloc(sizeof(int)* 3);
p[0] = 1; p[1] = 2; p[2] = 3;
p++;
p[0] = 4;
free(p - 1);
printf("%d",a);
system("pause");
return 0;
}
请问这个程序在执行free(p-1)之后不是被清空了吗?怎么还有0x003a8fdc这个地址,谢谢 展开
#include <stdlib.h>
int main()
{
int *p;
int a = 10;
p = (int *)malloc(sizeof(int)* 3);
p[0] = 1; p[1] = 2; p[2] = 3;
p++;
p[0] = 4;
free(p - 1);
printf("%d",a);
system("pause");
return 0;
}
请问这个程序在执行free(p-1)之后不是被清空了吗?怎么还有0x003a8fdc这个地址,谢谢 展开
大雅新科技有限公司
2024-11-19 广告
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
展开全部
地址没清空呀,地址的值肯定存在的,free只是把堆地址标记的内存标记为无效而已,表示能被操作系统回收
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
free的功能:释放ptr指向的存储空间。被释放的空间通常被送入可用存储区池,以后可在调用malloc、realloc以及calloc函数来再分配。
就是说free掉以后,可以这段内存就可以被再分配,但是不会清空内容。
就是说free掉以后,可以这段内存就可以被再分配,但是不会清空内容。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询