程序中的一些限制(基于Linux系统C语言)
今天突然想起来几个问题,在程序运行起来时,存在一些限制:
1,数组的长度(成员的个数)存在限制!(数组定义的空间大小)
2,一个进程里打开的文件数。
3,一个文件的名字的长度。
4,一个进程里创建线程的个数。
数组的长度(成员的个数)存在限制!
宏观上的限制因素:
首先,如果要确定一个数组的最大长度,我们需要知道它的数据类型,因此,数组的数据类型是其中一个限制因素。因为不同数据类型的元素大小不同。很显然(我们假设int
为4字节,char
为1字节),数据类型为char
的数组的最大长度是类型为int
的数组的4倍。
另外,我们不难想到,大小(size)的数据类型,也就是数组下标的数据类型,其实也是一个限制因素。在C/C++中,数组下标的类型是std::size_t
,因此数组的大小首先不能超过size_t
所能表示的大小。这个数据类型是在库文件stdio.h
中通过typedef
声明的,对于32位程序它被定义为unsighed int
,对于64位程序定义为unsigned long
。前者能表示的最大大小为2^32-1,后者为2^64-1。
微观上的限制因素:
函数内申请的变量,数组,是在栈(stack)中申请的一段连续的空间。栈的默认大小为2M或1M,开的比较小。
全局变量,全局数组,静态数组(static)则是开在全局区(静态区)(static)。大小为2G,所以能够开的很大。
而malloc、new出的空间,则是开在堆(heap)的一段不连续的空间。理论上则是硬盘大小。
一个进程里打开的文件数
这个一般都是1024。Linux上使用命令 ulimit -n 可以查看。
一个文件的名字的长度
在x86_64 Linux下,文件名的最大长度是255个字符(characters),文件路径的最大长度是4096字符(characters)。
一个进程里创建线程的个数
可以用ulimit -s命令来查看大小(一般常见的有10M或者是8M)。我们还知道,一个进程的虚拟内存是4G,在Linux32位平台下,内核分走了1G,留给用户用的只有3G,于是我们可以想到,创建一个线程占有了10M内存,总共有3G内存可以使用。于是可想而知,最多可以创建差不多300个左右的线程。
注:ulimit -a 查看程序中的所有限制
程序中的一些限制(基于Linux系统C语言)的更多相关文章
- 基于Linux系统的Nagios网络管理模块的实现
基于Linux 系统的Nagios网络管理模块的实现 1.引言 随着计算机网络的普及,网络管理已成为信息时代中最重要的问题之一.在现有的技术条件下,人们希望有一个更加稳定可靠的网络环境.计算机网络管理 ...
- 基于Linux系统geth的安装
转载地址 https://blog.csdn.net/qq_36124194/article/details/83658580 基于Linux系统geth的安装 安装ethereum sudo apt ...
- 基于Linux系统的病毒
虽然在Linux里传播的病毒不多,但也是存在一些,我从一些安全网站搜集了一些资料. 1.病毒名称: Linux.Slapper.Worm 类别: 蠕虫 病毒资料: 感染系统:Linux 不受影响系统: ...
- 安全威胁无孔不入:基于Linux系统的病毒(转)
虽然在Linux里传播的病毒不多,但也是存在一些.我从一些安全网站搜集了一些资料. 1.病毒名称: Linux.Slapper.Worm 类别: 蠕虫 病毒资料: 感染系统:Linux 不受影响系统: ...
- 基于Linux系统WINE虚拟机技术的研究
650) this.width=650;" onclick="window.open("http://blog.51cto.com/viewpic.php?refimg= ...
- python脚步管理工具supervisor=3.3.0的安装、使用。基于linux系统。
一.安装相关包 sudo apt-get install python-pip #python的安装包的工具 sudo apt-get install python-dev # ...
- 实验四:Linux系统C语言开发环境学习
项目 内容 这个作业属于哪个课程 班级课程主页链接 这个作业的要求在哪里 作业要求 学号-姓名 17043133-木腾飞 作业学习要求 1.学习Linux系统中如何查看帮助文档:2.在Linux系统中 ...
- Linux系统c语言开发环境
项目 内容 这个作业属于哪个课程 班级地址 这个作业要求在哪里 作业要求地址 学号-姓名 17041506-张政 学习目标 Linux系统下C语言开发环境搭建,学习Linux系统环境C语言开发过程 L ...
- 实验四 Linux系统C语言开发环境学习
项目 内容 这个作业属于哪个课程 Linux系统与应用 这个作业的要求在哪里 作业要求链接 学号-姓名 17041428-朱槐健 作业学习目标 1.Linux系统下C语言开发环境搭建 2.学习Linu ...
随机推荐
- AttributeError: module 'html.parser' has no attribute 'HTMLParseError'
别人说这种错误大多是,因为beautifulsoup的版本兼容问题, 因为beautifulsoup的4.0以下版本和4.0版本与python3.5以上都不兼容, 网上的解决方案大多是:降python ...
- 通过URLOS安装Redis缓存为wordpress网站提速
快!快!快!我们都知道网站的加载速度直接影响用户体验.据研究发现,网站页面在3秒内加载完毕对用户而言是最佳的浏览体验.如果超过这个时间,用户跳出网站的几率会非常大.所以对于站长来说,提高速度是他们追求 ...
- 【Linux开发】linux设备驱动归纳总结(五):2.操作硬件——IO内存
linux设备驱动归纳总结(五):2.操作硬件--IO内存 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
- 【Linux开发】linux设备驱动归纳总结(二):模块的相关基础概念
linux设备驱动归纳总结(二):模块的相关基础概念 系统平台:Ubuntu 10.04 开发平台:S3C2440开发板 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
- 在phpStrom中安装php代码格式化插件Php-cs-fixer
由于phpStrom原来的插件不再开源,现在转为使用Php-cs-fixer格式化代码.以下为在phpStrom中安装Php-cs-fixer的具体步骤. 安装安装很简单,下载php-cs-fixer ...
- Python使用pycharm导入pymysql
file->setting->project->project interperter,双击右侧出现的pip,弹出安装包,搜索pymysql->选择第一个->Instal ...
- 从入门到自闭之Python函数初识
函数初识 定义:def--关键字 将某个功能封装到一个空间中就是一个函数 功能: 减少重复代码 函数的调用 函数名+():调用函数和接收返回值 函数的返回值 return 值 == 返回值 ...
- 从入门到自闭之Python三大器--生成器
1.什么是生成器 核心:生成器的本质就是一个迭代器 迭代器是python自带的的 生成器是程序员自己写的一种迭代器 编写方式: 基于函数编写 推导式编写 def func (): print(&quo ...
- Java 从入门到精通随笔1
1.java中的main方法必须声明为public static void.String args[]是一个字符串类型的数组,是main()方法的参数. 2.基本数据类型Java有8种基本数据类型:数 ...
- Python简单主机批量管理工具
一.程序介绍 需求: 简单主机批量管理工具 需求: 1.主机分组 2.主机信息使用配置文件 3.可批量执行命令.发送文件,结果实时返回 4.主机用户名密码.端口可以不同 5.执行远程命令使用param ...