/*
 达内学习 UC day25 2013-10-8
 */
cat/proc/进程ID/maps 可以察看内存页的分配
malloc()在分配内存时候,如果是小块内存,直接分配33个内存页,如果大块内存(超过32个内存页)会分配比申请的内存也稍多的内存页。
int *p = malloc(4/8/16)
free(p); //请问4/8/16 对p的位置没有影响,如何free
malloc() 在分配内存时,系统记录一些额外的信息(底层是一个双向链表),因此mallooc()的内存地址会比申请的要多一些,这些额外信息中包含了分配的字节数(free()才可以释放)
注:由于附加信息的存在,在使用malloc时,不要超过malloc和size存数据,否则存储时不错错,但后续可能出错

free()释放内存页的效果:
1,检测是否需要释放 33 内存页
2,释放对应的内存页数
3,free不一定会解除内存映射,但一定会释放虚拟内存地址
4,free到最后33的内存页时,只释放虚拟内存地址,不在解除映射,最后33页到进程结束时候,才解除映射

经验:虽然malloc(),一次会分配33个内存页,但在应用时,每次存储新变量之前需要malloc().而不是简单的指针移动

brk()/sbrk()
brk()和sbrk()是unix的系统函数,底层维护了一个位置
void* sbrk(int increment) 参数是内存分配或释放的字节数
返回值是之前的位置(指针/地址)
increment > 0 分配内存
increment < 0 释放内存
increment == 0 取当前位置
失败/出错,返回(void*) -1

内存虚拟地址的分配的分配和回收 以字节为单位, 但内存映射和解除映射以内存页(4k)为基本单位
sbrk()/brk() 是系统函数,因此处理方式和malloc()完全不同,内存超过一页就分配第二页,不足一页就释放一页 。释放所有内存,映射全部解除

int brk(void*) 可以直接指定当前的位置
返回:0 成功   -1 失败
注: 使用brk()之前最少要sbrk(0)得到初始位置

使用brk()进行内存的释放比较方便,使用sbrk()进行内存分配比较方便

mmap()/munmap() - 映射物理内存/硬盘文件  解除映射

权限的有无用二进制代表
只读 100;只写 010;只执行 001;
因此很多权限/选项用 位或 运算拼接

25,UC(04) .相关推荐

  1. 仙道服务器维护,《问道》手游02月25日04:50分维护公告

    各位亲爱的道友: 为保证服务器的运行稳定和服务质量,<问道>手游所有公测服务器(内测专区除外)将于2021年02月25日04:50-09:00进行停机维护,实际关服时间可能与公告关服时间存 ...

  2. 183 25用计算机算列竖式,新北师大四年级上册数学计算题

    小学四年级数学上册计算题练习 三位数除以两位数(每题5分) 336÷ 21858÷39 918÷27 888÷37 645÷32 432÷46 966÷2 3 731÷79 980÷28 828÷36 ...

  3. 宫廷心计服务器修复,3月25日停服版本更新公告

    亲爱的玩家: 为了丰富游戏玩法,改善各位玩家的游戏体验,<宫廷计手游>将于3月25日04:00-09:00进行全服停服版本更新,更新过程中将无法登入游戏. 版本更新后安卓平台需要重新下载游 ...

  4. vb.net 获取系统图标_【系统更新V4】优麒麟 20.04 LTS持续完善!优化高清屏支持,上架6款新应用!...

    自优麒麟 20.04 LTS 发布后,官方一直积极从各个渠道汇总大家的反馈建议,并针对存在的问题进行记录和处理.对于系统使用过程中遇到的任何问题或者建议,欢迎大家通过系统中用户反馈程序.微信交流群.Q ...

  5. qt 取textedit 鼠标位置处单词_开源国产优麒麟20.04 V3发布:多达73处改进

    4月24日,优麒麟20.04 LTS正式发布,提供5年长期技术支持,默认搭载最新的Linux 5.4系统内核.全新的UKUI 3.0桌面环境预览版,同时支持x86.ARM64 CPU体系结构. 今天, ...

  6. POCO C++库学习和分析 -- 序

    POCO C++库学习和分析 -- 序 1. POCO库概述: POCO是一个C++的开源库集.同一般的C++库相比,POCO的特点是提供了整一个应用框架.如果要做C++程序应用框架的快速开发,我觉得 ...

  7. NS2仿真实验环境组建

    最近有初学NS2的同学问如何搭建环境,我这边把编写的实验手册中的一个章节拿出来分享. 更多内容请关注我编写的,即将由清华大学出版社出版的<无线网络技术教程(第2版)> 把内容粘上了,发现图 ...

  8. Linux输入输出I/O

    Linux输入输出I/O 本文主要以一张图介绍Linux在I/O上做了哪些事情,即Linux中直接I/O原理. 引言 先看一张图: 这张图大体上描述了Linux系统上,应用程序对磁盘上的文件进行读写时 ...

  9. linux telnet 常见问题配置

    Telnet配置 第一步:  查看是否安装telnet 服务 rpm -qa telnet-server 第二步:  找到软件包路径,安装软件: 第一种安装: 本地安装, 切换到软件包路径位置 rpm ...

最新文章

  1. 导入drupal中文语言包
  2. 使用缓冲流有什么好处_使用PVC石笼网有什么好处?
  3. AI理论知识整理(18)-内积与范数
  4. 克服35岁焦虑|算法er的尽头会是To B吗?
  5. centos7安装uwsgi报错_如何将CentOS 7升级到CentOS 8
  6. Python官方最后通牒:Python 2传奇20年将落幕,Python 3接力!
  7. win7服务器远程灰色的,小编为你细说win7系统远程协助复选框是灰色的详细技巧...
  8. P3233-[HNOI2014]世界树【虚树,倍增】
  9. Mac 10.10下安装MySQL5.6.21提示安装失败
  10. 删除mysql指令_MySQL常用命令学习笔记
  11. [UE4]暂停游戏、退出游戏、游戏输入模式
  12. 二级计算机混合引用,Excel单元格的相对引用、绝对引用和混合引用
  13. LiveGBS流媒体平台GB/T28181常见问题-海康大华宇视监控设备安防摄像头等设备注册不上来如何检查问题?
  14. 6种方法轻松将PDF转换为Word文档,办公必备!
  15. 实例讲解统计学基础知识(5):假设检验
  16. 无线键鼠接收器丢了怎么办
  17. 宁夏新八景[之一]:古峡新韵
  18. 产品经理交互设计师必备的已分类的《产品Axure原型库》
  19. JavaScript引用类型之Date类型
  20. dell G7 7588安装ubuntu双系统

热门文章

  1. Business English-Unit 4 Memos -A
  2. AngularJS中的$resource使用与Restful资源交互
  3. 企业品牌私域化运营,私域流量只是起步
  4. 关闭、设置-Win 8 优化 -by小雨
  5. 计算机硬件组装什,计算机硬件组装的步骤详解
  6. spring-boot 2.5.6 问题:WARN: This connection is using TLSv1.1
  7. 关于爱情,每个人都有话说
  8. 真正补肾黑芝麻秘传做法
  9. C# MQTT(MQTTnet)客户端
  10. 单位的计算机云空间容量,计算机中容量单位B、KB、MB、GB和TB的关系