东南教育网您的位置:首页 >资讯 > 新知 >

free cash flow(free c)

导读 大家好,小鑫来为大家解答以上的问题。free cash flow,free c这个很多人还不知道,现在让我们一起来看看吧!1、不可以的。2、malloc, al

大家好,小鑫来为大家解答以上的问题。free cash flow,free c这个很多人还不知道,现在让我们一起来看看吧!

1、不可以的。

2、malloc, alloc, free是c定义的一组内存管理的API函数,当你调用malloc、alloc分配内存时,不仅仅是从堆里面分配得到了可用内存,实际上内存管理子系统还会维护了内存列表。

3、你自己定义的指针不会在这个列表中的,所以free会出问题的。

4、那么,使用new, GlobalAlloc之类的方式分配的内存可不可以使用free呢。

5、我的回答是,尽量不要,大部分情况都会带来风险。

6、这里面涉及new, malloc, GlobalAlloc, HeapAlloc, LocalAlloc,VirtualAlloc等函数的区别。

7、C语言中,free可以释放calloc, malloc, realloc动态分配的空间。

8、 首先说明一下,你要释放的不是你定义的指针,而是你定义的指针指向的空间。

9、 至于你定义的普通指针是不是可以通过free释放,这个要看情况。

10、如果你定义的指针指向动态分配的地址空间,则可以使用free释放指针指向的这段空间;否则,就不能使用free释放指针指向的空间。

11、下面举两个例子:例1:char *p = NULL; p = (char*)malloc(1024); if (p != NULL) free(p);例2:char *p = NULL; char buf[1024]; p = (char*)buf; free(p);其中,例1是对的,例2是错误的。

12、free()不仅仅只能对malloc()分配过空间的才能free。

13、free()释放的是堆内存,申请堆内存的函数不止malloc函数一个。

14、另外,指针只是只向某个内存的地址,能不能被free,完全取决于指向的内存是不是堆内存,如果不是堆内存,就不可以free定义的指针不占内存,指针只是一个指向内存(可以由malloc开辟)的东西,free释放的是指针所指向已经开辟好的内存空间,用free释放。

15、不然容易造成内存泄漏!如果你的指针指向某个内存空间,当然可以使用free释放,但如果你的指针什么都没有指,那释放什么呢。

本文到此分享完毕,希望对大家有所帮助。

免责声明:本文为转载,非本网原创内容,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。