C语言 动态内存(二)

malloc与free注意事项:

       删除一个指针p   (free(p);),实际是删除了p所指的目标(变量或对象)释放了它所占的堆空间,而不是删除 p本身量或对象等),释放堆空间后,p成了空悬指针                                                              动态分配失败。返回一个空指针 (NULL),表示发生了异常堆资源不足,分配失败。
      malloc与free是配对使用的, free只能释放堆空间。如果malloc返回的指针值丢失,则所分配的堆空间无法回收,称内存泄漏,同一空间重复释放也是危险的,因为该空间可能已另分配,所以必须妥善保存malloc返回的指针,以保证不发生内存泄漏,也必须保证不会重复释放堆内存空间。

malloc/free:

1、野指针:不是NULL指针,是指向“垃圾”(当前不需要的指针)内存的指针。
     “野指针”是很危险的。

2、“野指针”的形成原因主要有两种:

        指针变量没有初始化;

        指针p被free之后,没有置为NULL,让人误以为p是个合法的指针。

例子:(正确的)

	char *p=NULL;
	p=(char *)malloc(10);
	if(p==NULL){
		return -1;
	}else {
		strcpy(p,"KeVin");
		printf("%s",p);
	}
	free(p);
	p=NULL;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值