动态内存分配
所谓动态内存分配(Dynamic Memory Allocation)就是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不象数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。
c/c++ 方法
定义了四个区间:代码区,全局变量,静态变量区,局部变量区(堆),自由存储区
堆:通常定义变量(或对象),编译器在编译时都可以根据该变量(或对象)的类型知道所需内存空间的大小,从而系统在适当的时候为他们分配确定的存储空间。这种内存分配称为静态存储分配;有些操作对象只在程序运行时才能确定,这样编译时就无法为他们预定存储空间,只能在程序运行时,系统根据运行时的要求进行内存分配,这种方法称为动态存储分配。所有动态存储分配都在堆区中进行。
静态内存分配 / 动态内存分配
动态内存不需要预先分配存储空间
分配空间可以根据程序需要扩大或者缩小
要实现动态分配存储空间,需要用到malloc函数
void *malloc(int size)
开辟长度为size 的连续空间。返回一个指向已分配连续存储域的起始地址的指针,如果未能成功,返回一个NULL 指针
调用时应话北侧返回值是否为NULL 。
方法
new 生成 动态无名变量
malloc 分配长度为size的内存块
{
常见引用头文件
#include <stlib.h>
#include <malloc.h>
#include <alloc.h>
}
常见错误
NULL 指针的解引用操作
分配内存操作过界
释放非动态分配的内存