出于某些目的,分配大量的虚拟空间会很有效,并且仅在被访问的页面中分配页面。分配大量内存是瞬时的,实际上并没有获取页面:char* p = new char[1024*1024*1024*256];

确定,上面指出的是错误的,因为它是32位数字。访问第一个元素没有问题:p[0] = 1;

但是,当稍后访问大约4Gb时,会出现段错误:p[1000000000] = 1;

我希望new调用malloc并调用sbrk,并且当我访问起始位置之外的4Gb位置时,它将尝试将任务内存扩展那么多?

这里是完整程序:#include

int main() {

constexpr uint64_t GB = 1024*1024*1024;

char* p = new char[256*GB]; // allocate large block of virtual space

p[0] = 1;

p[1000000000] = 1;

p[2000000000] = 1;

}

现在,当我尝试分配大量内存时,我得到bad_alloc,因此显然malloc无法正常工作。

我的印象是mmap可以映射到文件,但是由于建议这样做,所以我正在研究它。

是否有任何方法可以分配大量的虚拟内存并稀疏访问页面,或者这不可行?

linux 虚拟内存分配,是否可以在linux中分配大量虚拟内存?相关推荐

  1. c语言malloc引用类型作参数,c语言中动态内存分配malloc只在堆中分配一片内存.doc...

    c语言中动态内存分配malloc只在堆中分配一片内存 .C语言中动态内存分配(malloc)只在堆中分配一片内存,返回一个void指针(分配失败则返回0),并没有创建一个对象.使用时需要强制转换成恰当 ...

  2. 计算机配置 凭据分配,如何在Windows 10中分配默认凭据提供程序 | MOS86

    点击此处修复Windows错误并提高系统性能 我们都知道Windows 10带有多个登录选项.这是可能的,因为在操作系统中存在各种凭证提供商.在Windows的早期版本Windows XP,Windo ...

  3. JVM源码简析(楔子)-对象内存分配过程和PS回收器中YGC触发FGC的现象

    前言 想要搞明白Java对象内存申请过程的原因,是因为第一次接触线上GC日志的时候,发现了一些很奇怪的现象,就是young gc触发了full gc.为了搞清楚这个现象,得先要来个测试去复现. 复现现 ...

  4. linux为系统分配内存,Linux操作系统知识讲解:走进Linux 内存分配算法

    Linux 内存分配算法 内存管理算法--对讨厌自己管理内存的人来说是天赐的礼物 1.内存碎片 1) 基本原理 产生原因:内存分配较小,并且分配的这些小的内存生存周期又较长,反复申请后将产生内存碎片的 ...

  5. linux c语言 glibc 错误 munmap,Linux内存分配小结--malloc、brk、mmap

    Linux的虚拟内存管理有几个关键概念: 1.每个进程都有独立的虚拟地址空间,进程访问的虚拟地址并不是真正的物理地址: 2.虚拟地址可通过每个进程上的页表(在每个进程的内核虚拟空间地址)与物理地址进行 ...

  6. 什么是Linux系统调用system call?(Linux内核中设置的一组用于实现各种系统功能的子程序)(区别于标准C库函数调用)核心态和用户态的概念、中断的概念、系统调用号、系统调用表

    文章目录 什么是系统调用? 为什么要用系统调用? 系统调用是怎么工作的? 如何使用系统调用? _syscall*()是什么? errno是什么? 调用性能问题 Linux系统调用列表 进程控制 文件系 ...

  7. linux系统增加内存无法启动,linux – 增加虚拟内存而不增加VmSize

    (问题的可能解决方案是最后一段) 大多数具有虚拟内存的现代操作系统上的内存分配是一个两阶段过程.首先,保留过程的虚拟地址空间的一部分,并且过程的虚拟存储器大小(VmSize)相应地增加.这将在所谓的流 ...

  8. linux内存管理(八)-不连续页分配和页表

    一.不连续页 1.不连续页的接口函数 a.用户台接口函数 //分配不连续的物理页并且把物理页映射到连续的虚拟地址空间: void *vmalloc(unsigned long size);//释放vm ...

  9. linux如何管理进程,在嵌入式linux中进程是怎么管理的

    在linux内核中管理进程的方式,是创建了一个双向循环链表,然后这个链接上每一个成员就是一个task_struct结构体,每一个结构体就是一个进程,这玩意,太大了,这里我的精神不允许我叭叭那么多,所以 ...

最新文章

  1. 高性能JavaScript笔记三(编程实践)
  2. 【安全系列之跨域】跨域解决方案
  3. 心事一件件的了掉,希望一切都能恢复到正常
  4. 【无标题】物联网安全挑战:为什么企业现在必须评估它们
  5. 贴纸效果_(新)AE插件:时尚印刷贴纸效果动画帽子眼镜胡须嘴唇图标社交标题库(3001)...
  6. Eclipse过滤多余无用的Link文件和文件夹
  7. AOSP6.0.1 launcher3入门篇—hotseat相关实现
  8. POJ 1066 Treasure Hunt(计算几何)
  9. Excel学习笔记:P22-时间格式、工龄与工时计算
  10. 5款内容超赞的微信小程序,每一个都是深藏!
  11. Springboot应用缓存实践之:Ehcache加持
  12. android使用新浪邮箱,新浪邮箱
  13. 【微信小程序】微信小程序项目开发哔哩哔哩小程序
  14. 10个类脑计算最值得关注玩家 |量子位智库报告(附下载)
  15. Excel获取字体颜色信息的函数操作FgColor函数
  16. matlab 实现低通巴特沃斯滤波器、切比雪夫1型/2型滤波器 和 椭圆滤波器
  17. 人工智能除了下围棋还能干啥?
  18. 猫猫新开通了新浪微博,欢迎小伙伴们来关注哟
  19. 实用的php封装函数
  20. 分账系统多少钱?是如何收费的?

热门文章

  1. C++中的萃取机制(traits)
  2. cmd cd命令_Windows系统CMD命令提示符的常用命令汇总
  3. 32岁了 学python 来的及吗-32岁的程序员去了国企工作, 晒出年薪, 网友: 我没看错吧...
  4. 自学python免费教材-python零基础自学教材
  5. python函数定义及调用-python 中函数的定义以及调用先后顺序问题
  6. 逆向工程mysql注释_PowerDesigner 15进行逆向工程生成数据库图表时,注释的comment的生成,解决PowerDesigner逆向工程没有列注释...
  7. springboot项目识别不了pom.xml文件_Spring Boot Web 项目教程,Spring Boot的环境配置
  8. php urldecode 加号不显示_php|urldecode urlencode 的加号问题
  9. mysql 修复数据表 批量_MySQL数据库迁移与MySQL数据库批量恢复
  10. FFmpeg源代码简单分析:libavdevice的gdigrab