malloc 编程问题

          malloc   的作用是在内存的剩余空间,就是任何程序都没用的地方分配一块内存,把地址返回给程序。  
          所以   int   *p;   p   =   (int*)malloc(sizeof(int));   的意思是说在内存的剩余空间分配一块大小为int的内存,把这块内存的地址赋值给   p,这样在给这块内存赋值:  
          *p   =   i;   实际上是把   i   保存到   malloc   分配的内存里了。  
          如果再次   p   =   (int*)malloc(sizeof(int));   就是说在内存的剩余空间再分配一块大小为   int   的内存,把这个新分配的内存的地址赋值给   p,而先前用   malloc   分配的内存的地址等于多少就不知道了,先前的那块内存也就根本无法访问了,在内存里成为了“垃圾”。*p   的内容当然就是最后一次   malloc   的内存的内容了。  
          如果   malloc   的内存在不使用了的时候必须   free   掉,否则始终占用内存资源,而先前分配的内存没有被   free   掉就无法访问了,也就不能   free   了,成为一块内存漏洞。
          malloc是在堆中分配内存空间的,只要使用时不超出该空间范围即可,要用free释放已分配空间。两次malloc是不会重叠的。
          如果第一次   malloc   后有一些写内存的赋值操作,但是写入的字节数超过了分到的内存字节  
  数,再一次   malloc   时,重叠了一部分溢出地址,所以保存在溢出部份的值就变了。  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值