在我们已经掌握的内存开辟方法中,空间的开辟大小是要固定的,比如申明一个数组或者定义一个int类型变量。但是有时候我们需要的空间大小在程序运行的时候才能知道,那数组的编译时开辟空间的方式就不能满足了。所以这时候我们就需要试试动态内存开辟了。这篇文章介绍了动态内存函数。
一、动态内存函数的介绍
1、malloc函数 和 free函数
【注】:
malloc函数和free函数都声明在stdlib.h头文件中。
malloc函数原型:
void* malloc (size_t size);
malloc函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。
- 如果开辟成功,则返回一个指向开辟好空间的指针
- 如果开辟失败,则返回一个NULL指针
- 返回值的类型是void*,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定
- 如果参数size为0,malloc的行为是标准是未定义的,取决于编译器
free函数原型:
void free (void* ptr);
free函数用来释放动态开辟的内存。
- 如果参数ptr指向的空间不是动态开辟的,那free函数的行为是未定义的
- 如果参数ptr是NULL指针,则函数什么事都不做
举个例子: