函数原型如下 main() { int *p, length; .... p = InitList (&length); ... free(p); ... } int* InitList (int* l) { int *ptr; ptr = (int*)malloc (LIST_INIT_SIZE*sizeof(int)); if (!ptr){ printf ("申请失败!\n"); *l = 0; } else{ printf ("申请成功!\n\n"); *l = LIST_INIT_SIZE; } return ptr; } 我是否需要也在InitList函数中调用free函数来释放指针p?我曾尝试过,可是在main中似乎p无法再调用那一片空间。这是为什么?
问个C语言关于free的小问题
释放掉了内存,但是内存没有清空,数据还在那个地方,指针还指向那个地方,过一会这段内存就会被内存分给别人了,到时候就打印不出来了。
c语言 free的疑问
1.如果你只在main函数或者一个子函数里使用,那就在main函数或者子函数的结尾进行free;2.如果你在子函数里用了malloc,并返回了这个指针,那么就要在调用这个子函数的函数里,那块区域不再用了再free
关于c语言中free函数的一些疑问
你不能在函数里面释放空间,因为你申请空间的目的就是反回给主函数中的P,如果你一申请就又在函数里释放了,那和没申请没有什么区别,所以你在主函数中P也就无法再调用那一片空间了.
关于C语言中free函数的问题
free(a);\/\/ 释放空间;
关于C语言free函数的问题?
简单解释:你用malloc申请一个3平米的房间,房卡是a 你告诉计算机,房间不用了,但是你没有把a还回去,就是没有让a=null 如果房间没有新人来,你还可以用a开门,并且看到你睡过的床、用过的毛巾。但是很快,房间有新人入住了,但是没有换房卡(也换不了)。这时你用a开门进去,面临的将是很严重...
在c语言中有关free的用法错误,求指点。
因为free只能释放动态内存 而你的代码里只有静态内存b 静态内存只能由机器自动释放,也就是程序运行完后,自动释放内存 再往深里说就是.b变量是在栈里,只能系统释放.free只能释放堆里内存.
关于C语言free函数的问题
一般delete是和new配对的,free和malloc配对的!!其释放的是p所指向的空间,即内存地址!!但是指针变量没有变成NULL,其还是指向原来开辟的空间,但是此空间被释放了,所以其就是一个“野指针”,指针所指向的内容是”垃圾“,因此释放空间的时候,建议也把指针变成空指针!!!以免误用!!
用free函数需要注意什么
free(void *p)函数是用来释放程序动态申请的内存。其参数是个指针类型。在C当中,只有当使用了动态内存申请函数malloc calloc realloc申请内存之后,才可以使用free来释放之。释放之后就不能再使用了。在C++中,除了上述函数之外,还有new操作之后,都要使用free函数。切记,动态申请内存使用完后,一定要...
C语言free函数的疑问
指针变量本身是不释放的!只有指针变量的生命周期到了才会释放(比如主函数里定义的指针变量,当主函数结束后才释放!)
关于c语言中free函数的一些疑问
1:栈存储区。主要是存储局部的变量。2:静态存储区:主要是存储全局的变量和静态的变量。3:堆存储区:主要是存储用户自己向内存申请的变量。比如是:malloc,calloc,new 4:代码区:就是存代码:现在讲你的程序你要是想把ptr的只给传回去,就是想把栈里面临时的变量当作静态存储区里面的变量,你说能...