C语言中malloc()和free()函数的理解

本文介绍了C语言中malloc()和free()函数的使用。malloc()用于在堆上分配指定大小的内存空间,free()用于释放之前分配的内存。通过示例展示了如何使用这两个函数,强调了内存分配与释放的正确操作,以及未释放内存可能导致的问题。
摘要由CSDN通过智能技术生成

关于malloc和free这两个函数,malloc的用法示例:int *p=(int *)malloc(2*sizeof(int));它表示在堆中开辟一块大小为2*sizeof(int)的一块内存空间,p指向这块内存空间的起始地址,malloc前面的(int*)表示这块空间用来存储int型数组。开辟了这块空间后,可以修改这个空间中的值,例如为*p*(p+1)做赋值操作。如果再次使用malloc函数,例如再写一个 int *q=(int *)malloc(2*sizeof(int)); 此时开辟的以q为起始地址长度为2*sizeof(int)的空间是不会覆盖p所指向的空间的。但是,如果在int *q=(int *)malloc(2*sizeof(int));之前写一个free(p),那么,q所指向的空间则有可能覆盖p指向的空间。
所谓的free(p)操作,其实是修改p所指向的空间的标记值,让其可以被覆盖。尽管执行了free(p),p仍就指向以前的起始地址,依旧可以对*p*(p+1)赋值,并且可访问他们(例如输出)。
例如:

int main(){ 
  int *p=(int *)malloc(2*sizeof(int)); 
  free(p); 
  *p=1; 
  *(p+1)=2; 
  cout<<p<<endl<&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值