进程申请内存

#include <iostream>
#include <windows.h>
using namespace std;

int main(int argc, char *argv[])
{
    char *data = (char *)malloc(1024*1024*800);
    //char *data  = new char[1024*1024*800];
   // memset(data, 0x01, 1024*1024*800);
    while(1);
    return 0;
}

如果完全不用的话,那这个其实内核只是对这个进程进行了记账,没有真的直接给钱。这个开销其实很小,小到大概实际支出只有十几K而已,
你肯定要问,什么时候兑现,这个就是在你读或者写到内存的时候,而且是要用到多少才真的给,如你只用到20M的内存,那其实真的分配的物理内存也就比这个多一点(这当然是虚拟内存有管理的开销)。这种模式在计算机领域很常见。如so加载,进程启动等等。
具体的内容,你要看讲虚拟内存的书籍

malloc是用户态的操作,内核不知道的,内核只提供了brk这种系统调用给你

malloc只分配虚拟内存,只有到你用的时候才会有物理内存给出来

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 操作系统对内存的管理 没有内存抽象的年代 在早些的操作系统中,并没有引入内存抽象的概念。程序直接访问和操作的都是物...
    Mr槑阅读 16,838评论 3 24
  • 概述 我们都知道一个进程是与其他进程共享CPU和内存资源的。正因如此,操作系统需要有一套完善的内存管理机制才能防止...
    SylvanasSun阅读 9,267评论 0 25
  • 操作系统概论 操作系统的概念 操作系统是指控制和管理计算机的软硬件资源,并合理的组织调度计算机的工作和资源的分配,...
    野狗子嗷嗷嗷阅读 14,156评论 3 34
  • 2017年末,手Q春节红包项目期间,为保障活动期间服务正常稳定,我对性能不佳的Ark Server进行了改造和重写...
    90后老码农阅读 13,612评论 1 12
  • 1. 基础知识 1.1、 基本概念、 功能 冯诺伊曼体系结构1、计算机处理的数据和指令一律用二进制数表示2、顺序执...
    yunpiao阅读 10,820评论 1 22