c语言free的作用
发布时间:2025-05-19 02:47:15 发布人:远客网络
一、c语言free的作用
1、malloc和 free是在系统的栈上分配空间。
2、malloc是申请,意思就是告诉系统,我要用一块RAM,给我用了别人就不要用了。
3、free是释放,意思是告诉系统,给我的这块RAM我用完了,不再用了,系统可以把它干别的了。
4、free之后,系统还没有拿这块RAM干别的事之前,这块RAM的内容可能是不会变的,依然可以读出原来的内容,因为你的指针a还是指向这块RAM。但要注意,这块RAM已经不属于你了,读一下内容无所谓,如果往里面写就很危险了。
二、C语言中free函数的用法
free函数的用法释放ptr指向的存储空间。被释放的空间通常被送入可用存储区池,以后可在调用malloc、realloc以及calloc函数来再分配。
free不管指针指向多大的空间,均可以正确地进行释放,这一点释放比delete/delete []要方便。如在分配指针时,用的是new或new[]。
在释放内存时,并不能图方便而使用free来释放。反过来,用malloc分配的内存,也不能用delete/delete[]来释放。
int* p=(int*) malloc( sizeof(int)* 100);//分配可以放得下100个整数的内存空间。
1、free是和malloc、realloc或者calloc函数成对出现的,来保证动态分配的空间及时释放。
2、一块动态申请的内存用free释放一次就够。
三、在C语言中malloc,free,new,del,
1、1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。
2、2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。
3、3,因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。
4、4,C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存
5、new是个操作符,和什么"+","-","="...有一样的地位
6、malloc,free是c的函数,new,delete是c++的运算符
7、此外,new是强制类型的,malloc不是,需要类型转换
8、new可以调用构造函数在声明的时候初始化
9、malloc只是分配空间,需要在其他地方初始化
10、而delete不仅会释放空间,在释放前会调用析构函数
11、而且malloc需要指定分配空间大小,而new是自动计算的