c语言的小问题,可否这样free

 我来答
qzhao_1
2018-09-18 · TA获得超过2.4万个赞
知道大有可为答主
回答量:2.4万
采纳率:76%
帮助的人:4245万
展开全部
在 C 语言中,free( ) 是释放内存的库函数,它的函数原型在 stdlib.h 头文件中有定义。
另外,为指针变量分配内存的库函数有:malloc( )、calloc( )、realloc( )。
但是记住一点就是,为某个指针变量分配了一个内存的同时,必须要判断该内存分配是否成功。即:如果返回空指针 NULL,那么内存分配失败,立即退出应用程序,根本就不需要使用 free( ) 函数释放内存。否则的话,如果内存根本就没有分配成功,仍然使用 free( ) 函数去释放内存,系统也会出问题的。
根据我多年的编程经验,最好的程序可以写成如下的风格,详细举例如下(以 malloc 为例,其它函数同理):
#include <stdio.h>
#include <stdlib.h> /* malloc( ) 函数、free( ) 函数在此头文件有定义 */
void main( ) /* 主函数开始 */
{

char * p ; /* 定义一个字符指针变量 p */

p = (char *)malloc(10000*sizeof(char) ) ; /* 为 p 分配一块大小为 10000 个字节的内存,因为 sizeof(char) 的值为 1,故 malloc 分配的总大小为:10000 */

if( p == NULL ) /* 该语句绝对不能够省略,如果分配内存失败(即:返回 NULL),则立即退出应用程序,此时根本就不需要使用 free( ) 进行释放内存 */

{

printf("Memory allocation failured !\n") ; /* 输出:内存分配失败 */

exit(1) ; /* 立即退出应用程序 */

}

strcpy( p , "This is a test string !!!\n" ) ; /* 如果内存分配成功的话,往变量 p 中拷贝一个字符串 */

printf("%s\n", p) ; /* 将拷贝到 p 中的字符串显示在屏幕上 */

free( p ) ; /* 此时在退出应用程序之前,一定要记得使用 free( ) 函数释放刚才成功分配到的内存 */

}
自我编程
2018-09-18 · 科技优质答主
自我编程
采纳数:1481 获赞数:4282

向TA提问 私信TA
展开全部
free,释放的是由malloc、calloc、realloc申请的内存空间。
释放后,建议将原指针指向NULL,避免野指针。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式