动态内存管理: 如何释放一个内存? 如何申请一个内存?
以前是通过创建变量的方式来申请内存的。
全局变量:就跟随程序释放
静态变量:也跟随程序释放
局部变量:跟随代码块释放
1.动态内存管理,能够更灵活的决定申请时机和释放时机。
2.动态内存管理可以在运行时决定内存申请的大小。
让用户输入一个数字,通过这个数字来决定申请多少内存。(这是一个彻底的运行时行为)
malloc 标准库提供的函数 <stdlib.h>
m(memory内存)+alloc(申请)
malloc的功能:能够在系统中申请到一块连续的内存空间。
我们之前使用的指针:
1.指针的值表示地址
2.指针的类型表示内存的大小
malloc如果申请内存失败,就会返回一个NULL指针!
malloc得到的是一个连续的内存空间。
因此再malloc的返回值一定要做检查。
通过if或assert判断一下malloc的返回值是否空(在笔试面试中)
实际开发中是不需要对malloc的返回值进行判定的
void* malloc(size_t size);
size表示的是字节数,size_t类型,不能是负数,同样的也不能给size传一个0.(未定义行为)
void*就表示这个申请到的连续内存空间的起始地址。
使用malloc的时候大多数情况是:需要根据实际情况,把得到的void*强制类型转换成其他我们需要的类型指针。