c free语言自定义函数,C 语言free函数的工作原理

今天在网上看到了这样一个问题,“如果malloc 了一块字符串的内存,然后,它改变了这个字符串的大小,问会不会有一部分内存没有被释放掉。”这个问题,以前的确没有仔细想过。

当然,我觉得是肯定会释放掉的,但是一直没有了解过free 的原理,不敢乱说。我看了一下操作系统的内存管理,基本上是这样的,当然各个系统的实现不一样。

操作系统管理内存,维护了一个空闲内存链表,malloc从个链表中选出一个来使用,每个内存块都有一个头部来表示这个内存的基本信息,如内存大小,

所以free 时候 能够记住原来指针所指的内存大小,而不是用内存块中是否有 \0 来临时计算指向内存的大小,不要字符串的计算长度的方法所误导。

还有一点要注意的就是,系统在free 内存的时候,记住的只是 malloc 时候的地址,和 分配内存的大小。

比如 char *p = (char *)malloc(10); 就会产生分配10个 字节。如果 你把指针的地址改变了 p = p + 1; 然后 free 就要出问题了。程序会崩溃。

如果一定要改变指针的值,建议这样做 char *newp = p; 然后 改变 newp = newp + 1 , 最后 free(p);

还有一点要注意,一个长度 为10 的字符串 要占用 11个字节。因为还有一个 '\0', 所以分配内存的时候要分配 lenght + 1 的大小。

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至hey@evget.com

文章转载自:IT专家网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django 错误跳转页面

原网站:https://blog.csdn.net/goupper1991/article/details/50736826 django404,500错误自定义页面: 将 改为 1.修改settings文件DEBUG FalseALLOWED_HOSTS [127.0.0.1, localhost]或者ALLOWED_HOSTS [*]2.配置urls文件from django.conf.…

ElasticSearch-Hadoop:从Hadoop到ElasticSearch的产品视图计数索引和客户顶部搜索查询...

这篇文章涵盖了如何使用ElasticSearch-Hadoop从Hadoop系统读取数据并在ElasticSearch中对其进行索引。 它涵盖的功能是在最近n天中为每个客户的产品浏览量计数和热门搜索查询编制索引。 分析的数据可以进一步在网站上使用,以显示最近浏览过的客户,产品浏…

伸缩轨道_深度解析——伸缩喷漆房为什么这么受欢迎!

伸缩式喷漆房是一种环保喷漆设备,它可以在使用时,自动展开形成封闭或半封闭的环保喷漆房,不使用时收缩合拢到一处的特殊环保喷漆房设备,由于伸缩式喷漆房外观大方、简单实用且投资费用低,它在现代涂装应用中越发广泛。…

snippet,让你编码效率翻倍

为什么谈到Snippet 今天下午在用vscode做小程序的时候,发现很不方便,因为商店里提供的代码片段极为有限,而且平时几乎每天都需要用到代码片段,所以就在思考他们是怎么做到给别人提供代码的,我可以自定义代码片段吗。然…

键盘keydown值表

键盘名称键值(keycode)键盘名称键值(keycode)BackSpace8Tab9Clear12Enter13Shift_L16Control_L17Alt_L18Pause19Caps_Lock20Escape27Space32Prior33Next34End35Home36Left37Up38Right39Down40Select41Print42Execute43Insert45Del…

c语言算ex自定义函数,用C语言写定积分的通用函数:sin(x),cos(x),eX.

/************************************************************//*sin,cos,exp函数已经存在于系统的数学函数库中,程序开头需要定义math头文件*//************************************************************/#include/****************主函数****************…

day12-HTML基础之DOM操作

DOM(Document Object Model 文档对象模型) 一个web页面的展示,是由html标签组合成的一个页面,dom对象实际就是将html标签转换成了一个文档对象。可以通过dom对象中js提供的方法,找到html的各个标签。通过找到标签就可以…

小程序源码 租房管理系统_如何通过租房小程序开发快速引流

租房市场在整个房产市场占据了极大一部分市场份额,而随着租售同权政策的提出、房价的不断提升,租房市场份额将进一步扩大。合肥小程序开发智速新媒体公司传统的租房方式不管是出租方还是租房客户,彼此之间的消息不对等、沟通困难等因素导致房…

REST 101开发人员专用

本地代码执行 诸如C之类的高级语言中的函数将被汇编为Assembly中的过程 。 它们增加了一个间接级别,使我们不必考虑内存地址。 诸如Java之类的面向对象语言中的方法和多态性增加了另一种间接性 ,使我们不必考虑一组相似功能的特定变体。 尽管有这些间…

一个基于Bmob的OPPO锁屏壁纸小程序,写过之后发现...好像没什么卵用...一脸懵逼

小程序之前写的,也就前段时间,毛毛糙糙的写了第一版... 因为使用OPPO手机,所以有个锁屏杂志的东西,里面的图片每天都是由OPPO官方的人进行精选然后推送给用户的,图片菲菲菲菲菲常漂亮,看到网上很多人提取不…

SQLAlchemy 操作数据库

SQLAlchemy 操作数据库 SQLAlchemy为Python提供了不同数据库的统一接口,采用ORM的方式操作数据库,简洁优雅 一、安装 直接通过pip安装即可 pip install sqlalchemy 二、连接数据库 这里用小巧的sqlite来做测试 from sqlalchemy import create_engine# 创…

e会学上的c语言答案,e会学刷课脚本_e会学代刷

e会学刷课脚本_e会学代刷2020-06-17 04:10:15【刷课平台】【在线刷课】68在Excel 2010中,假定一个单元格的地址表示为$D25,则该单元格的行地址为( )。A、DB、25C、30D、45正确答案: B69在自定义序列对话框中输入新序列时,序列内容间用什么分隔。( )A、中文逗号B、回…

贝塞尔曲线理解与应用

贝塞尔曲线并非是由贝塞尔发明的,但是是因为他把这个东西应用到当时的汽车领域而闻名的,所以取名为贝塞尔曲线。 在我看来,用简单的话来理解一下贝塞尔曲线,他是通过少量几个点,使用一套公式,生成一条平滑曲…

数据结构 算法与应用C 语言描述答案,数据结构算法与应用-C语言描述.pdf

下载下载第1 6章 回 溯寻找问题的解的一种可靠的方法是首先列出所有候选解,然后依次检查每一个,在检查完所有或部分候选解后,即可找到所需要的解。理论上,当候选解数量有限并且通过检查所有或部分候选解能够得到所需解时&#xff…

云服务器布置_【阿里云ECS】(一)云服务器上安装RStudio-server

【阿里云ECS】(一)云服务器上安装RStudio-server最近注册了阿里云个人版,打算研究研究shiny部署问题。进了阿里云ECS因为是Ubuntu16.04的对于安装R和RStudio还是要学习实践一下的。第一步,安装R语言。我们使用apt的方式进行安装,步…

H5前期知识点总结 9月12日

知识点补充: 属性继承例子,color、font(font-size/style/family/weight) 1、浏览器的默认字体大小是16px,谷歌浏览器的最小字体是10px,其他浏览器的最小字体是12px。 2、通配符选择器 “*”,即选中body里所有的标签。 …

由原型模式引出的关于Cloneable接口和Object的clone()方法的一些问题

为什么要克隆快速到底 示例代码 1 class Resume2 {3 private String name;4 private String age;5 private String university;6 private String specialSkills;7 8 public Resume(String name, String age, String university, String specialSkills)…

Spring MVC:Ajax和JQuery

今天,我想演示如何将AJAX集成到Spring MVC应用程序中。 我将在客户端使用JQuery来发送请求和接收响应。 本教程将基于我以前关于Spring MVC和REST服务的教程之一。 在本文中,您将了解如何在异步请求的帮助下使Web应用程序更具交互性。 准备工作 我需要通…

C语言程序设计孙家啸第一版,广东年月自考各专业课程使用教材.doc

广东年月自考各专业课程使用教材附件2:广东2013年4月自考各专业课程使用教材序号课程代码课程名称使用教材作者出版社版次100009政治经济学(财经类)政治经济学(财经类)张雷声外语教学与研究出版社2012年版200012英语(一)大学英语自学教程(上册)高远高等教育出版社19…

手把手带你写一个JavaScript类型判断小工具

业务写了很多,依然不是前端大神,我相信这是很多‘入坑’前端开发同学的迷茫之处,个人觉得前端职业发展是有路径可寻的,前期写业务是一个积累过程,后期提炼总结,比如编程思想,父子类的原型继承&a…