十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
free函数的用法释放ptr指向的存储空间。被释放的空间通常被送入可用存储区池,以后可在调用malloc、realloc以及calloc函数来再分配。
创新互联专注于企业成都营销网站建设、网站重做改版、和硕网站定制设计、自适应品牌网站建设、H5高端网站建设、购物商城网站建设、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为和硕等各大城市提供网站开发制作服务。
free 不管指针指向多大的空间,均可以正确地进行释放,这一点释放比 delete/delete [] 要方便。如在分配指针时,用的是new或new[]。
在释放内存时,并不能图方便而使用free来释放。反过来,用malloc 分配的内存,也不能用delete/delete[]来释放。
举例:
int* p = (int *) malloc(4);
*p = 100;
free(p); //释放 p 所指的内存空间
或者:
int* p = (int *) malloc ( sizeof(int) * 100 ); //分配可以放得下100个整数的内存空间。
……
free(p);
扩展资料
1、free是和malloc、realloc或者calloc函数成对出现的,来保证动态分配的空间及时释放。
2、一块动态申请的内存用free释放一次就够。
如果内存管理做的好的话,你只能释放你申请的地址,否则不释放。
也就是说free(m+10); 和free(m-1);代码无效
其实什么都没有释放
因为free函数仅仅是告诉操作系统,这一块内存被释放了,可以用来作其它用途。但是,由于你没有重新对这块内存进行写操作,所以内存中的变量数值并没有发生变化。所以输出值不变。
通常建议,将这个p用完了也置NULL
抱歉我之前看错了。我写了一段代码,没问题啊,你看看:
#includestdio.h
char newbuf[1000];
char *newp=newbuf;
void free(char *p)
{
if(pnewbufpnewbuf+1000)
p=newp;
}
int main()
{
char a='a';
char *p=a;
free(p);
return 0;
}