在运行时才进行内存分配,C提供了两个函数malloc和free,分别用于执行动态内存的分配和释放,这些函数维护一个可用的释放池,当一个程序另外需要一些内存的时候,它就调用malloc函数,malloc函数会从内存池中提取一块合适的内存,并向程序返回指向这块内存的指针,此时这块内存还没有进行初始化。当一块以前分配的内存不再需要的时候,程序调用free函数,将内存归还给内存池,以备将来使用
如果内存池是空的,或者可用内存无法满足你的需要,这个时候会malloc会向操作系统请求,要求得到更多的内存,并在这块内存上执行分配任务,如果操作系统也无法向malloc函数提供内存,那么malloc函数会返回一个NULL指针,因此每个malloc返回的指针都要进行检查,确保返回的不是NULL在接着执行