这节主要复习动态内存管理中的malloc, realloc, calloc, 以及free。
为什么使用动态内存管理
首先需要明确一下为什么需要动态内存管理。
我们平常进行开辟空间是这样开辟的:
int a = 0; // 开辟一个四个字节大小的空间, 存放整形数据。
int a[10] = { 0 }; // 开辟一个40 个字节大小的空间, 存放十个整形数据。
但是以上开辟方式, 我们开辟出来的空间是固定的。 这就有可能出现问题。 因为我们在实际生活中, 我们使用的数据大小是不一定的。 我们不知道需要开辟多少空间来满足需求, 这就需要用到动态内存分配。人们可以通过动态内存分配, 使用更加灵活。
malloc
void* malloc (size_t size);
该函数是向堆区的内存中申请一块连续的空间。并返回一个指向这块空间首地址的指针, 注意这里的指针类型是void* 类型。
假如内存不够的话会返回一个空指针。
可以通过强制类型转换转换返回指针的类型。
由于内存不够会返回一个空指针, 所以我们通常在使用malloc之后会进行判断: