数组的元素存储与内存中连续的位置,当一个数组被声明时,它所需要的内存在编译时就被分配,但是我们也可以用动态内存分配在运行时为它分配内存。
1.malloc和free
C语言库函数提供了两个函数,malloc和free,分别用于执行动态内存分配和释放。这些函数维护一个可用的内存池。
当程序员需要一些内存时,调用malloc函数,malloc从内存中提取一块合适的内存,并向该程序返回一个指向这块内存的指针。
这块内存此时并没有以任何方式进行初始化,如果需要对这块内存进行初始化,要么手动进行初始化,要么使用calloc函数。当申请的内存不再使用时,程序调用free函数把它归还给内存池。
这两个函数的声明如下所示:
void* malloc(size_t size);
void* free(void* pointer);
malloc的参数就是需要分配的字节数,如果内存池中的可用内存可以满足这个需求,malloc就返回一个指向被分配的内存块起始位置的指针。
malloc分配一块连续的内存,所以如果内存池不够你需要分配的内存,它会返回一个NULL指针,所以对每个从malloc返回的指