问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于free函数的描述错误的是()

发布网友 发布时间:2022-04-30 15:45

我来回答

2个回答

热心网友 时间:2022-06-26 16:21

cd
free()到底释放了什么
这个问题比较简单,其实我是想和第二大部分的题目相呼应而已!哈哈!free()释放的是指针指向的内存!注意!释放的是内存,不是指针!这点非常非常重 要!指针是一个变量,只有程序结束时才被销毁。释放了内存空间后,原来指向这块空间的指针还是存在!只不过现在指针指向的内容的垃圾,是未定义的,所以说 是垃圾。因此,前面我已经说过了,释放内存后把指针指向NULL,防止指针在后面不小心又被解引用了。非常重要啊这一点!
好了!这个“题外话”终于说完了。就这么简单说一次,知道个大概就可以了!下面就进入第三个部分:
三、malloc()以及free()的机制:
这个部分我今天才有了新的认识!而且是转折性的认识!所以,这部分可能会有更多一些认识上的错误!不对的地方请大家帮忙指出!
事实上,仔细看一下free()的函数原型,也许也会发现似乎很神奇,free()函数非常简单,只有一个参数,只要把指向申请空间的指针传递
给free()中的参数就可以完成释放工作!这里要追踪到malloc()的申请问题了。申请的时候实际上占用的内存要比申请的大。因为超出的空间是用来记录对这块内存的管理信息。先看一下在《UNIX环境高级编程》中第七章的一段话:
大多数实现所分配的存储空间比所要求的要稍大一些,额外的空间用来记录管理信息——分配块的长度,指向下一个分配块的指针等等。这就意味着如果写过一个已 分配区的尾端,则会改写后一块的管理信息。这种类型的错误是灾难性的,但是因为这种错误不会很快就暴露出来,所以也就很难发现。将指向分配块的指针向后移 动也可能会改写本块的管理信息。
以上这段话已经给了我们一些信息了。malloc()申请的空间实际我觉得就是分了两个不同性质的空间。一个就是用来记录管理信息的空间,另外一个就是可用空间了。而用来记录管理信息的实际上是一个结构体。在C语言中,用结构体来记录同一个对象的不同信息是
天经地义的事!下面看看这个结构体的原型:
struct mem_control_block {
int is_available; //这是一个标记?
int size; //这是实际空间的大小
};

对于size,这个是实际空间大小。这里其实我有个疑问,is_available是否是一个标记?因为我看了free()的源代码之后对这个变量感觉有点纳闷(源代码在下面分析)。这里还请大家指出!
所以,free()就是根据这个结构体的信息来释放malloc()申请的空间!而结构体的两个成员的大小我想应该是操作系统的事了。但是这里有一个问 题,malloc()申请空间后返回一个指针应该是指向第二种空间,也就是可用空间!不然,如果指向管理信息空间的话,写入的内容和结构体的类型有可能不 一致,或者会把管理信息屏蔽掉,那就没法释放内存空间了,所以会发生错误!(感觉自己这里说的是废话)
好了!下面看看free()的源代码,我自己分析了一下,觉得比起malloc()的源代码倒是容易简单很多。只是有个疑问,下面指出!
// code...

void free(void *ptr)
{
struct mem_control_block *free;
free = ptr - sizeof(struct mem_control_block);
free->is_available = 1;
return;
}

热心网友 时间:2022-06-26 16:22

答案不是cd
关于free函数的描述错误的是()

事实上,仔细看一下free()的函数原型,也许也会发现似乎很神奇,free()函数非常简单,只有一个参数,只要把指向申请空间的指针传递 给free()中的参数就可以完成释放工作!这里要追踪到malloc()的申请问题了。申请的时候实际上占用的内存要比申请的大。因为超出的空间是用来记录对这块内存的管理信息。先看...

在c语言中有关free的用法错误,求指点。

free只能释放堆里内存.

C中free()的问题

free函数对应的是malloc返回给你的指针,free将指针指定的内存空间释放,如果发现指定的内存空间不是在与malloc匹配的内存空间,free操作就会失败,会告诉你一个堆不可用的错误。 你在调用free之前改变了其最初指向的内存空间,所以会出错。

c\c++里关于free()函数的小疑惑。。。

1。连后面也释放了 因为你对这块空间的访问是通过首地址给指针变量a来实现的,释放a后,你也就没法访问这块空间了 2。是不一样的 动态分配存储空间是分配在SDRAM上,程序读入也是在SDRAM上,就是我们通常所说的内存,区别是动态分配存储空间在内存的数据段,而程序放在内存的代码段 而静态RAM,是通常...

关于free()函数的疑问

可以,返回的地址就是分配的地址,可以使用free来释放的,但要注意不要重复释放或使用释放后的指针。

关于函数free的问题

1,char *p=NULL;/*必须给一个空指针,否则它指向一个不确定地址,不是空,所以free执行。*/ 2,char *p="gaza";/***静态分配不可以用free释放***/

关于C语言free函数的问题?

简单解释:你用malloc申请一个3平米的房间,房卡是a 你告诉计算机,房间不用了,但是你没有把a还回去,就是没有让a=null 如果房间没有新人来,你还可以用a开门,并且看到你睡过的床、用过的毛巾。但是很快,房间有新人入住了,但是没有换房卡(也换不了)。这时你用a开门进去,面临的将是很严重...

关于C语言free函数的问题

一般delete是和new配对的,free和malloc配对的!!其释放的是p所指向的空间,即内存地址!!但是指针变量没有变成NULL,其还是指向原来开辟的空间,但是此空间被释放了,所以其就是一个“野指针”,指针所指向的内容是”垃圾“,因此释放空间的时候,建议也把指针变成空指针!!!以免误用!!

一个关于free函数的问题,大家帮忙看看

free指针之后,释放指针所指向的内存空间,但是该指针指向的内存地址不变,不是NULL,但是指向的内存已无效不应该再使用。你可以自己赋值NULL,表明指针无效不指向任何内存。C++中的delete也是一样的。

关于free()函数用法问题

只释放head指针所指向的1个结构体。可以这样 while(head->next!=null){ student* tmp=head;head=head->next;free(tmp);}

关于友元函数的描述中错误的是 关于函数模板描述错误的是 以下关于函数的说法错误的是 关于虚函数的描述正确的是 以下错误的描述是函数调用可以 编写函数fun,函数的功能是 下面函数描述不正确的是 c语言所有函数都是外部函数 成员函数一定是内联函数?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
《三嫁坏坏坏老公》txt全集下载 三嫁狂野首席的txt全集下载地址 三嫁狂野首席电子书txt全集下载 狂颜三嫁的txt全集下载地址 刚买个诺基亚5233手机 给他上什么软件好 推荐哈!如果软件系统送的也不... 我的5233就下了 墨迹天气 IBOOKV5 来电通 百度输入法 QQ2008 为什么上QQ... 诺基亚5233主屏上出现的可以来回滑动的电话 我手机型号是诺基亚5233。下载了墨迹天气,安装完成后手机里却找不到了... 《后策》txt全集下载 猫咪眼睛表面像玻璃碎了咋回事 怎么处理 丰田先驱者哪里能看 C语言里是不是free()函数只能用来释放通过malloc建立的内存空间? 先驱者的影片评论 c语言中用free要用什么头函数 一千毫升血等于几斤 人体内有多少毫升血?多了毫升是一斤?加急拜托了各位 谢谢 1斤血多少毫升 一升血液等于多少斤 600CC是多少公斤 血1公斤等于多少毫升 600毫升血有多少斤 开着蓝牙会很耗电吗 一直开着蓝牙耗电么 蓝牙不关会非常耗电吗? 蓝牙5.0比4.2省电多少 打开蓝牙耗电量大吗? 实用的法考APP软件 法考选用什么样的软件 司法考试哪个app好 竹马法考的掌握程度可以改变吗 上海车展:一个堵满新车的救赎之地电子书txt全集下载 c语言中,头文件stdlib.h主要包含什么函数? 丰田喜一郎说过的名言 C++中,free函数为什么会报错? 丰田第一个销售网络创建人? 丰田发展史电影叫什么名字? 个性的先驱,时尚的前沿,丰田奕泽IZOA,让人目不转睛 香肠晚上不收有露水会不会坏? 《先驱者》观后有感 从键盘输入10个整型数据,放入数组a 中,求其最大值、最小值及其所在元素的下标位置,并输出。 晾香肠第二天早上发现香肠外面好多水珠怎么回事 试C-HR EV有感:传统大厂造的新能源车型,你得品才能香 c++的“free” 白天晒干的香肠怎么到了晚上又湿哒哒的,还粘粘的? 丰田喜一朗对日本汽车工业有何贡献 为什么腊肠晒会出水 丰田的创始人是谁? 剥开的玉米放一晚会不会变老 求《时间规划局》这部电影的英文观后感。200字左右。初一水平。也可以是其它电影。不要复制,要原创。 先有本田还是先有丰田?