函数free()的功能是什么?占用的堆空间是否可以不释放?123456789123
函数free()的功能是释放由malloc()、calloc()或realloc()函数分配的内存空间,使其可以再次被分配。如果传递给free()函数的指针不是由这些函数分配的,或者是一个空指针,那么行为是未定义的。
需要注意的是,free()函数只是释放指针所指向的内存空间,而不改变指针本身的值,因此释放后的指针可能成为野指针,指向不可用或被其他程序改写的内存。为了避免这种情况,最好在free()之后将指针置为NULL。
另外,malloc()和free()函数应该成对使用,否则会造成内存泄漏。占用的堆空间如果不释放,会导致程序运行效率降低,甚至出现内存不足的错误。
free就是将申请内存的控制权交还给操作系统。一般是建议释放的,否则这块内存谁都用不了
不释放就会造成内存泄漏,如果说程序长时间运行,不断调用alloc,就会内存越用越多,耗尽全部内存后崩溃
不知道你这个问题是否已经解决, 如果还没有解决的话:前面定义了一个指向动态内存的指针变量 p:
int *p = malloc(sizeof*p);前面讲过,动态分配的内存空间是由程序员手动编程释放的。那么怎么释放呢?用 free 函数。 free 函数的原型是
# include <stdlib.h>
void free(void *p);