sbrk/brk函数用法

2023-11-19

头文件unistd.h

sbrk/brk函数重新指定数据段的结束位置,sbrk(0)获得当前数据段结束地址

sbrk(增量),增量可正,可负,可为0,都返回原来数据段的结束地址。失败返回-1

brk(地址),返回0或-1.

通过重新指定数据段新的结束位置,操作系统会以页为单位映射到物理内存或解除物理内存的映射。

具体用法看下面例子

#include <stdio.h>
#include <unistd.h>

int main()
{
	printf("page info size is %d\n", getpagesize());//获取页的大小
	int *p = sbrk(0); //获取当前数据段地址
	printf("end address is %p\n", p);
	brk(p+8); //数据段结束位置后移8*4个字节,实际映射了一页,即4096字节
	int i =0;
	for(; i < 18; i++) //数据越界不会出现段错误,因为是以页为单位4096个字节映射的
	{
		printf("%d ", p[i]);	
	}
	printf("\n");
	sbrk(4070); //数据段结束位置再后移4070个字节,(p = 32+ 4070 = 5002)此时内存映射了两页
	p[1024] = 100;
	printf("%d \n ", p[1024]);
	sbrk(-6);//数据段结束位置前移6个字节,即p向后移了4096字节,此时解除映射第二页
	printf("%d ", p[1024]); //此时出现段错误,因为 p[1024]超出第一页了。
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sbrk/brk函数用法 的相关文章

  • CSS 选择器

    h1 class center 标题居中 h1 p class center color 段落居中 颜色为红色 p 如果我们要在 html 元素中设置 css 样式 那么就需要需要在元素中设置选择器 即决定当前元素使用哪种样式 一般来说 常
  • django实训总结

    不知不觉中 一个学期又要结束了 上学期结束时的日子仿佛历历在目 没想到又迎来了一个学期的结束 这个学期依旧学习了python 让我继续加深了对python这门课的认识 实训让我觉得十分有意思 像打开了新的知识大门 Django结合了许多以前

随机推荐

  • 大学生竞赛项目

    编程 蓝桥杯 报名时间 10月 报名网址 https dasai lanqiao cn 中国软件杯大学生软件设计大赛 报名时间 5月 报名网址 http www cnsoftbei com 中国高校计算机大赛 报名时间 11月 报名网址 h
  • 钉钉开发之使用HTTP请求获取你的公网出口IP

    访问别人提供的网络服务时 对方出于安全性方面的考虑 可能会对请求的IP进行白名单限制 这时候需要提供机器的出口IP 比如目前微信公众号对于访问其接口需要先绑定开发者的服务器IP 这个IP实际上就是开发者服务器的出口IP 但是获取当前机器的公
  • 爬虫实例十四 多线程爬取一万张表情包

    import requests import threading import os from bs4 import BeautifulSoup from queue import Queue from threading import T
  • 第一个Java程序HelloWorld

    第一个Java程序HelloWorld 1 随便建一个文件夹用来存放代码 2 新建一个java文件 可以叫Hello java 后缀是 java的文件 3 用记事本打开写如下的代码 public class Hello public sta
  • 由Qt::BlockingQueuedConnection引起的关闭Qt主页面而后台仍有进程残留

    BUG 由Qt BlockingQueuedConnection引起的关闭Qt主页面而后台仍有进程残留 1 错误代码示例 首先我们看下下面的代码 可以思考一下代码的错误之处 BlockingQueueDeadLock h pragma on
  • MATLAB代码基于cnn-lstm的轴承寿命预测

    一种结合卷积神经网络 convolution neural networks 简称CNN 和长短时记忆 long short term memory 简称LSTM 神经网络的滚动轴承RUL预测方法 首先 对滚动轴承原始振动信号作快速傅里叶变
  • MMD Maximum Mean Discrepancy 最大均值差异

    reference http songcy net posts story of basis and kernel part 2 https zhuanlan zhihu com p 163839117 https www zhihu co
  • leetcode 查找

    解法1 直接使用STL class Solution public vector
  • 使用QSettings保存QT应用程序数据

    使用QSettings保存QT应用程序数据 简介 QSettings类提供了持久的跨平台应用程序设置 这些settings一般都是存在系统里的 比如windows一般都写在系统注册表或者写INI文件 mac系统一般都在XML文件里 那么按照
  • 如何创建项目

    1 MvvmLight框架的引用 引用 头部选项卡的 工具栏 NuGet 包管理器 管理解决方案的NuGet 程序包 搜索 MVVM Light MvvmLight 作者 Laurent Bugnion GalaSoft 勾选项目 Do n
  • Vue2组件封装 Vue组件封装

    写在前面 虽然是Vue2组件封装 主要的内容是记录一下我对封装组件的一些要点和我的看法 原学习视频来源于b站黑马从0到1封装组件库 什么是组件 都说Vue是组件化开发 确实有道理 别说按钮输入框这种组件了 就连每个页面 从本质来看也是一个个
  • 电源学习总结(六)——BUCK设计

    降压型开关电源 BUCK 是实际应用中较为广泛使用的电路 本文来详细说一说相关的设计细节 这里不考虑集成的开关电源 分控制和驱动 开关管 电感等部分讲 文章目录 基本结构 控制和驱动 开关管 自举电容 电感 电容 工作频率选择 其他注意事项
  • new做了哪些事?

    new做了哪些事 function Parent this name Person const p new Parent 创建一个空对象 将对象的原型 proto 指向构造函数的prototype原型对象 将构造函数的this指向当前对象
  • 使用xshell-ssh连接服务器,报错:Xshell Socket error Event: 32 Error: 10053

    XShell连接CentOS系统时 报出Xshell Socket error Event 32 Error 10053 错误 有点烦人 操作 用SSH工具连接linux电脑出现的问题 Read from socket failed Con
  • 多益网络_网络安全的未来日益激烈的信息控制之战

    多益网络 Over two decades ago Alphabet CEO Eric Schmidt noted The Internet is the first thing that humanity has built that h
  • 内核虚拟化KVM/QEMU——guest os,qemu,kvm的运行流程

    内核虚拟化KVM QEMU guest os qemu kvm的运行流程 这里主要介绍基于x86平台的Guest Os Qemu Kvm工作流程 如图 通过KVM APIs可以将qemu的command传递到kvm 1 创建VM syste
  • 问题 对于二分类问题,当训练集中正负样本非常不均衡时,如何处理数据以更好 地训练分类模型?

    为什么很多分类模型在训练数据不均衡会出现问题 本质原因是模型在训练时优化的目标函数和人们测试时使用的评价标准不一致 这种不一致可能是训练数据的样本分布和测试数据的不一致 例如训练时优化的整个训练集 正负比例1 99 的正确率 而测试的时候期
  • JavaScript [数组去重] 的部分方法总结

    参考了文章 JavaScript数组去重 12种方法 史上最全 有部分改动 删去了一些没用的代码 替换了部分for循环 一 利用ES6 Set去重 ES6中最常用 function arrayRemoveSame arr return Ar
  • 二手房各项税费计算公式

    北京的房屋类型有很多种 有商品房 公房 一类经适房 二类经适房 两限房 现针对这些类型的房子列一下二手房购置过程中 需要考虑的税费 一 各类房源简介 1 商品房 正规从售楼处买的房源 2 公房 单位分的房子 由于不知道原值 所以个税按 网签
  • sbrk/brk函数用法

    头文件unistd h sbrk brk函数重新指定数据段的结束位置 sbrk 0 获得当前数据段结束地址 sbrk 增量 增量可正 可负 可为0 都返回原来数据段的结束地址 失败返回 1 brk 地址 返回0或 1 通过重新指定数据段新的