C语言中free函数的用法

Python0144

C语言中free函数的用法,第1张

free函数的用法释放ptr指向的存储空间。被释放的空间通常被送入可用存储区池,以后可在调用malloc、realloc以及calloc函数来再分配。

free 不管指针指向多大的空间,均可以正确地进行释放,这一点释放比 delete/delete [] 要方便。如在分配指针时,用的是new或new[]。

在释放内存时,并不能图方便而使用free来释放。反过来,用malloc 分配的内存,也不能用delete/delete[]来释放。

举例:

int* p = (int *) malloc(4)

*p = 100

free(p)//释放 p 所指的内存空间

或者:

int* p = (int *) malloc ( sizeof(int) * 100 )//分配可以放得下100个整数的内存空间。

……

free(p)

扩展资料

1、free是和malloc、realloc或者calloc函数成对出现的,来保证动态分配的空间及时释放。

2、一块动态申请的内存用free释放一次就够。

不可以的。

malloc, alloc, free是c定义的一组内存管理的API函数,当你调用malloc、alloc分配内存时,不仅仅是从堆里面分配得到了可用内存,实际上内存管理子系统还会维护了内存列表。你自己定义的指针不会在这个列表中的,所以free会出问题的。

那么,使用new, GlobalAlloc之类的方式分配的内存可不可以使用free呢。我的回答是,尽量不要,大部分情况都会带来风险。这里面涉及new, malloc, GlobalAlloc, HeapAlloc, LocalAlloc,VirtualAlloc等函数的区别。

在内存上有三个区域可以用来保存数据,一个是栈区、一个是堆区、一个是静态区,一般常用的定义变量是在栈区开辟,特点是系统开辟和释放;堆区的空间是由使用者来开辟空间,所以需要借助malloc开辟空间,free释放空间。p=(char *)malloc(sizeof(char)*20)malloc函数申请空间,sizeof(char) * 20表示malloc开辟空间字节数为20字节,malloc前的char * 表示开辟空间进行强制类型转换为需要开辟的空间的数据类型。free(p)函数表示释放由使用者开辟的空间,因为空间开辟是手动调用函数开辟的空间,所以释放空间也需要调用函数开辟。