这篇博客,我们主要解决以下的两个问题:

  1. malloc()申请1G的内存能否成功?判断依据是什么?
  2. 申请了一块空间没有free,进程结束,那么空间是否被回收?

如下程序完成编译后,一边运行一边查看资源管理器内存占用变化情况:


却发现内存似乎没有发生任何明显的变化,这是为什么呢?
因为我们申请了空间而未使用,因此系统并未向我们分配。

然而,修改代码后

此时内存占用逐渐增大,之后又恢复原样,这是因为进程已经结束,与该进程相关的所有资源都被回收了(被动回收)。

那么,假如我们申请超出内存大小的空间呢?
初始占用情况以及修改代码如下:

显然,编译后终端已经向我们输出了警告。

我们强制执行,此时内存空间已经不够我们使用,超出了物理内存,所以将一部分放置在虚拟内存中,申请空间并未超出其总大小。
假设我们使用swapoff -a命令关闭虚拟内存,那么此时申请空间将会直接失败。

回答之前的问题:

  1. malloc()申请1G的内存能否成功?判断依据是什么?
    ① 申请的空间 < 物理内存空间
    ② 申请的空间 < 物理内存空间 + 虚拟内存空间
    上述两种情况是可以成功的。
  2. 申请了一块空间没有free,进程结束,那么空间是否被回收?
    依然会被回收

Linux——内存的申请与释放相关推荐

  1. java怎么释放分配的内存,linux 内存的分配和释放,linux分配释放

    linux 内存的分配和释放,linux分配释放 了解内存分配机制(共享映射与请求分页) 通过 pmap 命令,可以获取用户进程逻辑地址空间中映射的内存信息: pmap -x $pid 其中 -x 表 ...

  2. 动态内存的申请和释放

    动态内存的申请和释放 文章目录 动态内存的申请和释放 1. malloc() 和 free() 的基本概念以及基本用法 1.1 函数原型及说明: 1.2 被释放的指针 1.3 注意事项 2. mall ...

  3. linux清理进程内存,linux 内存使用管理及释放

    Linux 内存使用检查及释放内存 如何查看linux内存使用: 1.free -g 命令 或 free -h total:总计物理内存的大小. used:已使用多大. free:可用有多少. Sha ...

  4. c语言清理内存程序,C语言中 内存的申请与释放

    内存的申请与释放 对于一段内存的数存,该如何解释,是依赖于数据类型,需要使用 malloc,其使用语法如下: void * malloc(size_t size); 函数 malloc 包含在头文件为 ...

  5. C/C++代码调试:快速定位内存的申请和释放的位置

    1.问题 如果大型项目中出现类似于*** glibc detected *** logcacheinit: double free or corruption (fasttop): 0x0000000 ...

  6. Win32 API中内存的申请与释放

    之前在做内存泄漏分析模块功能开发时,发现在windows下的输出结果并不是很准确,很多内存泄漏都显示是在windows的api或crt函数中,比如CoInitializeEx,stderror,IsO ...

  7. 动态链表的创建、节点内存空间申请以及释放

    1.动态链表的初始化: typedef struct _STACK{ void* data;     int size;     struct _STACK* next;     struct _ST ...

  8. Linux内存管理: 物理内存的释放(回收).为物理页面抬棺

    前情提要: 地址转换 物理页面的分配 终于到了物理内存的释放. 内存页面如生命一般. 有生有死. 接下来我们就要为物理页面抬棺收尸了. 1.要点: 如何为兄弟抬棺回收? 分配时跟谁分开的, 回收时要跟 ...

  9. linux进程阻塞的原因,释放大块内存时的阻塞问题

    一.前言 在堆上申请和释放内存的性能不高,这应该是常识了,尤其释放大块内存时,耗时更长,甚至会阻塞其他线程.做性能优化时,一般会采用内存池等手段避免频繁的申请和释放内存.本文从内核的角度分析申请和释放 ...

最新文章

  1. 新技术不断涌现,下一代云计算的突破口在哪里?
  2. IK分词器使用自定义词库
  3. 全球黑客盛会:2008年黑帽大会要闻摘要(2)
  4. Redis五种数据结构
  5. vc++6.0 模拟鼠标点击代码 木马程序的编写 VC 模拟键盘输入
  6. 单片机全局有必要封装_C语言开发单片机为什么大多数都采用全局变量的形式?...
  7. 怀旧服大脚插件未能从服务器,《魔兽世界怀旧服》大脚插件 安装方法使用教程...
  8. java 开发手机web,手机web app开发笔记
  9. 记录——《C Primer Plus (第五版)》第九章编程练习第四题
  10. 理解SapLocation()
  11. cocos-2d iphone入门(二) cocos2d源代码生成查询文档
  12. idea+按系统目录打开项目_在win10打开注册表编辑器的七种方法,你知道几种
  13. jenkins-启动和关闭服务
  14. python ctp接口_GitHub - keli/ctp-python: 穿透式监管版本CTP接口的Python封装
  15. 如何在PHP中获得有用的错误消息?
  16. 数学建模算法总结(一)
  17. 安卓逆向助手反编译apk后文件夹为空
  18. 设计参考之不凡的日本LOGO
  19. 如何压缩Word文档大小?这个方法太简单啦!
  20. 妈妈吼你屋子乱的像猪窝的无聊探究

热门文章

  1. Windows常用bat脚本打开目录或文件
  2. Facebook Libra 内存池组件(Mempool)简介
  3. 北美省钱快报 php,神奇的微距镜头 - 引领大家一起探索细微世界的神奇!
  4. Computer Organization and Design The Hardware/Software Interface: RISC-V Edition
  5. MySQL分库分表面试知识总结
  6. 木马,病毒,蠕虫的异同
  7. 秒杀设计 mysql_如何设计秒杀系统?
  8. Redis 秒杀案例
  9. Fourth6: Comprehensive project network upgrade | Cloud computing
  10. 软工之404 Note Found团队