加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正确使用C中的free()函数

发布时间:2020-12-16 09:57:20 所属栏目:百科 来源:网络整理
导读:我是C编程语言的新手,所以你能告诉我这是否是正确的方法. 例如: 缓冲区上的程序点,我使用该指针作为free()函数中的参数.那么,这个功能会导致什么问题呢? 解决方法 你可以在指针上调用free,这些指针只分配了malloc / calloc / realloc返回的内存. 例如. cha
我是C编程语言的新手,所以你能告诉我这是否是正确的方法.

例如:
缓冲区上的程序点,我使用该指针作为free()函数中的参数.那么,这个功能会导致什么问题呢?

解决方法

你可以在指针上调用free,这些指针只分配了malloc / calloc / realloc返回的内存.

例如.

char* ptr=malloc(10); 

// use memory pointed by ptr 
// e.g.,strcpy(ptr,"hello");

free(ptr); // free memory pointed by ptr when you don't need it anymore

要记住的事情:

>永远不要释放记忆两次.这可以做到:(1)如果你在ptr上调用free两次,并且自从第一次调用free之后ptr的值没有改变(2)你有两个不同的指针指向同一个内存;如果您在一个上免费拨打电话,则现在也不允许您在第二个指针上免费拨打电话>释放指针时,甚至不允许读取其值;例如,除非您将ptr初始化为新值,否则在释放后不允许(ptr)>当然你也不应该取消引用释放的指针>正如@chqrlie所指出的那样,我还要在这里添加将空指针传递给free也完全没问题,这样就什么都不做了

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读