C语言笔记(翁恺老师)--动态内存分配

动态内存分配

malloc

1.需要引入头文件

#include <stdlib.h>

2.它的原型参数是size_t,返回的类型是void *

void * malloc(size_t size); 

free()

  • 把申请得来的空间还给“系统”
  • 申请过的空间,最终都是要换的
  • 只能还申请来的空间的首地址
    • 释放的不是申请来的空间的首地址(p已发生变化)
      在这里插入图片描述
    • 释放的空间不是malloc得来的在这里插入图片描述

写指针的好习惯:一旦定义就初始化为0
因为:可能会忘记malloc或者malloc失败,这样free(0)就不会出错

  • free(NULL)可以
    所以为了配合好习惯,free()就不会出错
void *p = 0;
free(p);

没空间了

  • 如果申请失败则返回0, 或者叫做NULL
  • 系统能给你多大的空间

常见问题

  • 申请了没free->长时间运行内存逐渐下降
    • 新手:忘了
    • 老手:找不到合适的free时机
  • free过了再free
  • 地址变过了,还去free
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值