• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > 程序运行时需要分配的内存堆或栈大小是否会被操作系统所限制?

程序运行时需要分配的内存堆或栈大小是否会被操作系统所限制?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了程序栈,计算程序占用的栈空间,出栈程序,栈和队列程序,用栈写出计算器的程序等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:程序运行时需要分配的内存堆或栈大小是否会被操作系统所限制?
描述:

初看《编程珠玑》,试着实现了一下第一章的外部排序问题,下面的程序首先用generate_num(int scope, int count)函数在0-9,999,999范围内随机生成1,000,000个正整数,存放在文件all_nums.txt中,格式如下所示:

2357779
3473210
4731848

然后,通过函数disk_sort()对该文件中的所有正整数进行排序并将其排序结果存放在另一个文件sorted_nums.txt中,其思想同书中类似,不同的是这里用的是占8位的char来表示位向量all_nums[n],'0'表示这个数n不在待排序集合中,'1'表示这个数n在待排序集合出现1次,以此类推. char all_nums[MAX_SCOPE]这个数组需要占用10M内存空间。用clang3.5或gcc4.8编译成功后,分别在64位的Ubuntu14.04和Windows 8下运行它却发现segmentation fault (core dumped)错误。而同时以十倍缩小整数范围和整数个数至MAX_SCOPE=1,000,000和count=100,000就能够顺利运行。完整代码在这里https://gist.github.com/xuefu/9aecc7f2b8ae3ab0ce55。

我的问题是(基于Ubuntu 14.04):

  1. 操作系统对其运行的某个进程是否有内存大小限制,这个值是多少,若有,对堆内存和栈内存的限制是否一样?
  2. 如何来饶过这个限制,使得这个程序成功运行?应该是在编译时设置还是运行时设置?
  3. C语言如何来存储单个的二进制位,像C++中的bitset类一样?

解决方案1:

Linux 里面程序能使用的堆内存和栈内存最大值是可以通过 ulimit -v 和 ulimit -s 命令设置的,详见 help ulimit。

程序也能动态的通过 setrlimit() 来动态的设置最大值,不过允许设置的范围不能超过 ulimit 命令所设置的 hard limit。

C 的标准库并没有封装类似 bitset 的东西(说起来,C 标准库有封装任何的容器么?),你自己写一个吧,应该相当的简单,无非就是一些很直接的 bit 运算。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 程序运行时需要分配的内存堆或栈大小是否会被操作系统所限制?

相关文章

  • 2017-06-05 破解MD5,请帮个忙!!!!有酬
  • 2017-06-05 有没有人对数码相机与pc的通信协议比较了解的?
  • 2017-06-05 PH复合电极的电路接法
  • 2017-06-17汇编语言程序的结构
  • 2017-06-05 内存地址区间大小计算题
  • 2017-06-05 为什么我的外部中断函数不能在串口上显示,51单片机的,急急
  • 2017-06-05 sourceinsight打不开,一直弹出已停止工作。重装不管用
  • 2017-06-05 小妹我是大二的学生,刚学汇编,请大哥哥们帮忙!
  • 2017-06-05 对于初学lua与cocos2dx结合做游戏,应该怎么起步呢
  • 2017-06-05 请教关于PDACompactFlash接口驱动的问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 请教各位帮忙
    • 大家帮帮我啊,SOS(解决后加500分)
    • 学习PowerPC的起步。
    • wince平台如何绘制圆弧
    • STM32硬件IIC使用问题
    • lua.dlllua的字符串操作的问题
    • 寻求usb驱动程序开发者共同研究问题
    • ARM汇编程序中伪操作
    • 这段代码为什么一直报错
    • 嵌入式系统特点

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有