c++数组可开多大

news/2024/11/7 19:33:40/

c++数组可开多大及蓝桥杯内存限制分析

参考链接:link

蓝桥杯题目
时间限制1sec 内存限制128mb

内存和 = 栈区 + 堆区 + 全局静态区 + 文字常量区 + 程序代码区(函数体二进制代码)

重点讨论最常用的栈区、全局静态区和程序代码区
理想状态下(实际占比不大),程序代码取0,讨论栈区和全局静态区

  • 栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。单个变量占比不大,重点讨论数组。
  • 全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。
  1. 函数内申请的变量,数组,是在栈(stack)中申请的一段连续的空间。栈的默认大小为2M或1M,开的比较小。
  2. 全局变量,全局数组,静态数组(static)则是开在全局区(静态区)(static)。大小为2G,所以能够开的很大。
  3. 而malloc、new出的空间,则是开在堆(heap)的一段不连续的空间。理论上则是硬盘大小。

蓝桥杯题目128mb
全局静态变量最大可取 128乘1024乘1024/(8乘4)= 4.19乘106(int)
4.19乘106(int)乘4 = 1.67乘107(char)
(根据蓝桥杯题目128Mb算得)(int)106
(根据编辑器给的最大栈区内存2Gb算得)6.7乘107 (int)107
栈区最大可取 2乘1024乘1024/(8乘4)= 6.55乘10^5(int 2mb)
(根据编辑器给的最大栈区内存2Mb算得)(int)105

容易出RuntimeError运行错误:

  • 数组大小不够数据量
  • 数组超出题目内存限制

http://www.ppmy.cn/news/172153.html

相关文章

微星迫击炮主板插满4根内存条不开机问题

微星b460m迫击炮。 原本电脑用2根8g的内存条,正常使用,后来想拓展内存条,又买了两根8g的。但主板插满4根8g内存后,电脑无法开机。 折腾了两天,又是关xmp,关mflash fast boot的,还有降内存频率啥…

微星B550M迫击炮,设备管理器 声卡不显示Realtek解决办法

原因是主板设置里默认关闭了HD音频控制器 开机连续按DEL键进入BIOS 进去后右上角english改成中文 之后按F7切换到高级模式 选择左边的settings选项 然后选择高级 整合周边设备,看下HD音频控制器是禁止还是允许的 禁止要改成允许 改后按F12保存后 自动重启进入windo…

微星主板 新版bios 开启虚拟化

微星主板新版bios的虚拟化位置比较特别。 进入bios开启高级模式, 如图cpu configurationn SVM Mode就是虚拟化

微星主板蓝牙图标不显示,蓝牙打不开?

点开这个链接的朋友,相信你们已经试过之前的所有方案,还是不行,我这个可以作为兜底方案。 这个方法比较暴力,但亲测可用! 步骤: (1)打开微星科技官网,找到客户服务 &…

微星小飞机没有osd显示怎么办?

微星小飞机是一款显卡超频工具,可以让处理器有更快的运行速度,很多游戏玩家比较需要,有小伙伴反映自己电脑中微星小飞机没有osd显示怎么办? 微星小飞机没有osd显示的解决方法 1、将电脑中的微星小飞机软件卸载干净。 2、进入微星小…

微星B550M MORTAR WIFI 的蓝牙模块消失的解决办法

症状描述 WIFI模块正常重启蓝牙支持服务无效设置中无蓝牙开关通知中蓝牙按钮消失设备管理器中没有蓝牙下拉菜单,此时点击查看,勾选显示隐藏的设备,蓝牙一栏为灰色重新安装各版本驱动均无效 解决办法 重启进入BIOS,关闭板载网卡控…

微星主板bios怎么进 微星进入bios按哪个键

小编昨天想进自己的微星电脑bios设置中调节电脑的设置,不过对于怎么进入bios设置并不是很了解,应该也有很多小伙伴和小编一样有这样的问题吧,不过爱学习的小编已经从网上找到了进入的方法,现在就来告诉大家,有需要的小…

微星h510m和铭瑄h610m哪个好? h510和h610区别

微星H510M是基于Intel的H510芯片组设计,支持最新的第11代和第10代Intel Core处理器。它配备了滚冲迟2个DDR4内存插槽,最高支持64GB的DDR4 3200(OC)MHz内存。H510M还配备了1个PCI-E 3.0 x16插槽、2个PCI-E 3.0 x1插槽和4个SATAIII接…