正确使用C中的free()函数
发布时间:2020-12-16 09:57:20 所属栏目:百科 来源:网络整理
导读:我是C编程语言的新手,所以你能告诉我这是否是正确的方法. 例如: 缓冲区上的程序点,我使用该指针作为free()函数中的参数.那么,这个功能会导致什么问题呢? 解决方法 你可以在指针上调用free,这些指针只分配了malloc / calloc / realloc返回的内存. 例如. cha
我是C编程语言的新手,所以你能告诉我这是否是正确的方法.
例如: 解决方法
你可以在指针上调用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也完全没问题,这样就什么都不做了 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |