C语言动态内存释放这个free(p);到底是释放的是第一个单元的空间还是释放分配整个单元的连续空间?

C语言中:在申请了1000个节字的动态内存,假如用p指针指向这个空间的第一个单元地址,那么我在程序结束后使用free(p);是把p所指向的空间释放掉,那么这个释放是把p的首地址单元的释放?还是把所有申请的动态内存全部释放?

free()释放的是指针指向的内存,不单单是首地址单元,
包括所有动态分配的

另外注意释放的是内存不是指针
指针是一个变量,只有程序结束时才被销毁
释放了内存空间后,原来指向这块空间的指针还存在,
只不过现在指针指向的内容是未定义的,是垃圾
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-01
全部释放
第2个回答  2012-06-01
后者

C语言动态内存释放这个free(p);到底是释放的是第一个单元的空间还是释放...
free()释放的是指针指向的内存,不单单是首地址单元,包括所有动态分配的 另外注意释放的是内存不是指针 指针是一个变量,只有程序结束时才被销毁 释放了内存空间后,原来指向这块空间的指针还存在,只不过现在指针指向的内容是未定义的,是垃圾

请问C语言free(p)释放p所指向的动态内存后p指向哪?是NULL还是随机还是什 ...
释放后指向随机地址。所以free后,如果没有新地址给指针变量,p就应该给空值NULL。否则就是“野指针”。

C语言,free函数这样用对吗?
是的,完全释放了。因为你最后释放的p,b,的指针,和申请calloc时的值是完全一样的。中间不论怎么变,但最后的地址是正确的,你申请了,两个数组,释放了两次。这个操作是可以的。

C语言中的动态内存分配的用法举例
1、malloc函数:其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针。2、free函数:由于内存区域总是有限的,不能不限制地分配下去,而且一个程序要尽量节省资源,所以当所分配的内存区域不用时,就要释放它,以...

在c语言中有关free的用法错误,求指点。
因为free只能释放动态内存 而你的代码里只有静态内存b 静态内存只能由机器自动释放,也就是程序运行完后,自动释放内存 再往深里说就是.b变量是在栈里,只能系统释放.free只能释放堆里内存.

C语言中free函数的用法
在释放内存时,并不能图方便而使用free来释放。反过来,用malloc 分配的内存,也不能用delete\/delete[]来释放。举例:int* p = (int *) malloc(4);p = 100;free(p); \/\/释放 p 所指的内存空间 或者:int* p = (int *) malloc ( sizeof(int) * 100 ); \/\/分配可以放得下100个整数的...

c语言中free函数释放内存后,该内存的里边的数据还有吗?
关于使用分配的内存,调用free后的内存状态解释如下:1.当调用free来释放分配的内存时,它表明该内存可以被其他人使用,也就是说,它可以在其他地方调用malloc之后分配给内存 2.对于释放后内存中的数据数量,我们只能认为是脏数据;换句话说,这部分数据可能存在并保持原始值,也可能被清空或修改为其他值...

C语言-动态分配内存 malloc & free
这块内存和数组没有本质区别,用法完全相同。需要先计算需要多少字节的内存空间 数组举例子:释放的时候需要注意, 因为在for循环执行之后,p的地址往前移动了10, 所以需要减去10, 然后再释放p,不然会有问题 \/\/ 当销毁时只需要free一次,malloc了几个字节就会free几个字节,和char类型还是int类型无关 ...

动态内存分配详解——C语言
动态内存分配是C语言中处理内存空间的关键,它解决了固定空间浪费或不足的问题。动态内存管理旨在提供灵活的内存分配和释放,以适应程序运行时的需求。主要的动态内存管理函数有malloc()和free()。malloc()用于动态申请内存,其原型在stdlib.h头文件中。free()用于释放先前动态申请的内存,如果不主动释放,...

c语言中,malloc和free是什么意思?
malloc是申请内存的,free是释放内存的。1、malloc一般用法:int *t=NULL;t=(int *)malloc(sizeof(int));也可以在sizeof前面加上一个'n*'这就成了一个动态分配数组的方法。2、free一般用法:int *t=NULL;t=(int *)malloc(sizeof(int));free(t);这样t所指的空间就被释放掉了。

相似回答