Linux内存从0到1学习笔记(6.12 应用程序是如何申请内存的呢?)

这篇具有很好参考价值的文章主要介绍了Linux内存从0到1学习笔记(6.12 应用程序是如何申请内存的呢?)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面:

    前面提到了应用程序大多基于glibc的malloc/free进行内存的分配。这里不讨论共享内存,因为共享内存都是预先分配好的,所以由共享内存mmap和shm所设计的内存泄漏比较少见。

    接下来我们从应用调用的维度来看下,应用程序都有哪些调用入口,以及它们是如何申请和释放内存的。

一,应用程序内存申请与释放

    因为应用程序是程序开发语言强相关的,那么就需要了解下应用程序开发者在使用高级语言进行内存的申请时的入口函数。其实除了java语言是其jvm虚拟机来进行内存的管理,其他大多数主流语言都是基于glibc的分配器进行内存的管理。

    下面几种是TIOBE Index网站上受欢迎程度排名靠前的几种开发语言,我们来简单了解下。

1.1 C语言内存申请与释放

这些函数可以在 <stdlib.h> 头文件中找到。
 • void* malloc(unsigned size); //在堆区分配一块指定大小的内存空间,用来存放数据。这块内存空间在函数执行完成后不会被初始化,它们的值是未知的。
 • void* realloc(void* ptr, unsigned newsize); //该函数重新分配内存,把内存扩展到 newsize。
 • void* calloc(size_t numElements, size_t sizeOfElement);//在内存中动态地分配 num 个长度为 size 的连续空间,并将每一个字节都初始化为 0。所以它的结果是分配了 num*size 个字节长度的内存空间,并且每个字节的值都是 0。
 • void free(void *address); //该函数释放 address 所指向的内存块,释放的是动态分配的内存空间。 

1.2 c++语言内存申请与释放

    c&文章来源地址https://www.toymoban.com/news/detail-437118.html

到了这里,关于Linux内存从0到1学习笔记(6.12 应用程序是如何申请内存的呢?)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 高通Android 12/13 默认应用程序授予权限

    1、一提到权限很多Android开发者都会想到 比如拨打电话 读取手机通讯录 定位 这些都是需要申请权限,Google Android 6.0之后(sdk 23) 需要app动态申请权限 或者权限组 2、我这里打个比方 比如需要在fm应用 默认打开mic权限  3、我们需要知道这个默认应用程序的包名 (例如 xxx.

    2024年02月01日
    浏览(40)
  • 学习笔记|大模型优质Prompt开发与应用课(二)|第四节:大模型帮你写代码,小白也能做程序

    GT│飞桨开发者技术专家 研发资源持续投入是企业为了获取核心技术.提升竞争力而进行的必要投资,同时也是企业实现长期发展、保持核心竞争力的关键因素。 在大型企业当中,人力成本占研发投入通常超50%,互联网头部企业研发薪资通常在20k以上,可以看到技术性人才非

    2024年02月15日
    浏览(38)
  • win--C盘程序员常见应用内存空间处理

    写在前面: 本篇用于记录我对于C盘各个应用内存处理的总结, 在win中有着这样一个命令mklink,可以在win系统中构建链接,就可以完成一些将C盘内容移动到D盘,但不需要修改软件配置文件的操作。 命令格式 例 复制.vscode文件 在C盘C:Users${用户名}中复制.vscode到需要的目录假

    2024年02月05日
    浏览(42)
  • 学习笔记|ADC|NTC原理|测温程序|STC32G单片机视频开发教程(冲哥)|第十九集:ADC应用之NTC

    NTC(Negative Temperature Coefficient)是指随温度上升电阻呈指数关系减小、具有负温度系数的热敏电阻现象和材料。该材料是利用锰、铜、硅、钴、铁、镍、锌等两种或两种以上的金属氧化物进行充分混合、成型、烧结等工艺而成的半导体陶瓷,可制成具有负温度系数(NTC)的热

    2024年02月07日
    浏览(43)
  • MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明

    MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明 MySQL笔记——表的分组查询、表的分页查询、表的约束、数据库设计 MySQL案例——多表查询以及嵌套查询 MySQL笔记——数据库当中的事务以及Java实现对数据库进

    2024年01月16日
    浏览(54)
  • K8S 1.27 动态调整容器CPU和内存资源限制,无需重启应用程序

    如果您在部署Pod时指定了 CPU 和内存资源,更改资源大小需要重新启动 Pod。到目前为止,重启对于正在运行工的作负载是一种破坏性操作。 Kubernetes 1.27 中的 alpha 功能发布。其中一项能够自动调整 Pod 的 CPU 和内存限制的大小,只需修补正在运行的 Pod 定义即可更改它们,而无

    2024年02月07日
    浏览(38)
  • 6.12 谱分解

      单纯矩阵 normal matrix 指的是符号 A T A = A A T A^TA=AA^T A T A = A A T 的矩阵,他们的特征值互异。此外,单纯矩阵还有个特点,他们的特征空间彼此正交。   对于单纯矩阵,存在以下的谱定理 Spectral theorem : 单纯矩阵可以分解为以下矩阵相加的形式: A = ∑ i = 1 n λ i v i v

    2024年02月06日
    浏览(30)
  • Markdown笔记应用程序Note Mark

    什么是 Note Mark Note Mark 是一种轻量、快速、简约,基于网络的 Markdown 笔记应用程序。具有时尚且响应迅速的网络用户界面。 在群晖上以 Docker 方式安装。 官方的镜像没有发布在 docker hub ,而是在 ghcr.io ,所以直接用命令行来安装 镜像分为前端 和后端两个镜像 在 SSH 客户端中

    2024年02月07日
    浏览(34)
  • Linux应用程序开发经验

    1.1 熟练掌握命令行环境 • 要学会Linux编程,必须得先学会用Linux,也就是要在Linux命令行环境下“生存”下来 • 给一台主机,能够在上面装一个操作系统(比如Ubuntu18.04或者其他版本) • 给一台Linux服务器,能够熟练地用起来 • 或者在Win10下,熟练使用WSL2 • 安装WSL2 • 基

    2024年02月07日
    浏览(34)
  • 【Android笔记98】Android小案例之APP应用程序管理(获取已安装应用、卸载应用)

    这篇文章,主要介绍Android小案例之APP应用程序管理(获取已安装应用、卸载应用)。 目录 一、应用管理APP小案例 1.1、运行效果 1.2、使用技术 1.3、案例代码

    2024年02月02日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包