今天在解决一道题的时候,在函数内部定义数组突然脑子抽风多打了几个零(一百万),一运行

——嗯,爆了orz

于是,我翻开了书,但并没有发现哪里有说数组大小限制。

后来找到度娘帮忙

  • 首先明确,数组申明在函数内部,即属于局部变量,是存放在栈上的

  • 其次,栈的默认内存空间为 1 M左右

  • 一百万长度的数组占用的内存大小:1000000=1000 *1000 * 4byte ≈ 4M

    int型数据长度为4byte

所以,会导致内存溢出。

要想解决这个问题有两种方法:可以将数组申明在全局存储区或堆上

方法一:申明为全局变量

#include<iostream>
using namespace std;
int list[1000000];
int main()
{...return 0;
}

方法二:存放在堆上

#include<iostream>
using namespace std;
int main()
{int *list;list=new int[1000000];...return 0;
}

总结一下:

  • 函数内申请的变量,数组,是在栈(stack)中申请的一段连续的空间。栈的默认大小为2M或1M,开的比较小。
  • 全局变量,全局数组,静态数组(static)则是开在全局区(静态区)(static)。大小为2G,所以能够开的很大。
  • 而malloc、new出的空间,则是开在堆(heap)的一段不连续的空间。理论上则是硬盘大小。

C++如何定义一个长度超过一百万的整型数组相关推荐

  1. java 整型数组定义_在Java中定义一个具有10个元素的整型数组a的语句是:___

    在Java中定义一个具有10个元素的整型数组a的语句是:___ 答: int [] arr = new int[10] 在借贷记账法下() 答:在账户结构上,"借"和"贷 ...

  2. C++如何定义一个长度超过一百万的数组

    在C++中若要设置长度大于1000000的数组,不能在函数内部声明,因为这样属于局部变量,存放在了栈上,容易造成内存溢出. 解决这个问题有两种办法: 1.将数组声明为全局变量: #include< ...

  3. 第十四周项目一数组大折腾(1)创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后输出数组中元素的值,每五个元素

    问题及代码 创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后输出数组中元素的值,每五个元素 换一行. /*烟台大学计算机学院 201 ...

  4. 关于《输入一个字符串,内有数字和非数int字符,如a123x456,将其中连续的数作为一个整数,依次存放到整型数组a中》的一点看法

    最近刚刚学习了C基础这门课程,作到了这个习题,这个题目要求将字符串中的数字作为整数存放到整型数组中,这个题目有一个特点就是字符串中除了有数字还有非数int字符.看完题目,我顿时来了兴趣. 在一开始我选 ...

  5. java 定义一个方法,用于比较两个int数组的数字是否相同

    定义一个方法,用于比较两个int数组的数字是否相同 分析: 1.定义方法:方法的返回值为boolean类型参数为两个数组(int[] arr1,int[] arr2) 2.比较数组长度是否一样: 3. ...

  6. C语言编程>第十六周 ⑧ S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度。请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中

    例题:S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度.请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中,函数返回数组a的长度. 例如,s=&qu ...

  7. 12.定义一个集合类SET,处理整型数组。

    12.定义一个集合类SET,处理整型数组.通过成员函数重载运算符"==",判断一个数是否属于集合;通 过友元重载运算符"==",判断两个集合是否相同,即集合中的 ...

  8. c语言学习-定义一个整型数组a[10],将数组a[10]中的10个元素按逆序重新存放

    定义一个整型数组a[10],将数组a[10]中的10个元素按逆序重新存放 程序流程图: 代码: #include<stdio.h> void main() { int a[10]; int ...

  9. int java 声明_怎样用java定义一个int数组 C++ 怎么声明一个整型数组?

    导航:网站首页 > 怎样用java定义一个int数组 C++ 怎么声明一个整型数组? 怎样用java定义一个int数组 C++ 怎么声明一个整型数组? 相关问题: 匿名网友: int[] anA ...

最新文章

  1. C语言优势大揭露,你还在等什么呢?
  2. Matlab与线性代数 -- 单位矩阵
  3. 失败的Omni协议与继续前行的虫洞协议
  4. 软件项目验收汇报ppt_项目验收!万能PPT模板!等你来拿
  5. php微信使用腾讯地图进行定位,微信定位+腾讯地图导航
  6. es的doc_value对排序字段的作用
  7. OpenCV读取RTSP视频流
  8. 如何在计算机命令内转换操作盘,如何在命令行窗口中从驱动器C切换到驱动器D...
  9. 编码器分类及原理和测速应用(含代码)
  10. My Fifty-Seventh Page 递增子序列 - By Nicolas
  11. shader实现飞线效果(three.js练习)
  12. 基于小波分解与LSTM的城市轨道短时客流预测
  13. FlinkSQL JDBC 批处理 java heap space
  14. HTML+CSS基础训练之实现一个“真实”的网页~
  15. 团队建设之做好技术团队管理
  16. 磁盘性能--IOPS和吞吐量
  17. 一起来看流星雨剧情简介/剧情介绍/剧情分集介绍第二十三集
  18. 洛谷P5831 Python [USACO19DEC]Cow Gymnastics B
  19. 如何制作prezi swf格式字体(prezi 中文字体)
  20. 9款国内外垂直领域的在线作图工具:那些可以替代Visio的应用!

热门文章

  1. DICOM:DICOM万能编辑工具之Sante DICOM Editor
  2. linux vim安装molokai配色方案
  3. uniapp:省市选择 自定义组件
  4. 数据中台和ERP是啥关系?不都是信息系统吗? by彭文华
  5. java最高线程优先级是,Java线程优先级
  6. docker命令 清理缓存
  7. matlab 降维工具
  8. 【python+opencv】图像卷积及滤波
  9. 推荐算法!基于隐语义模型的协同过滤推荐之用户商品推荐列表
  10. Mac平面设计师必备软件,懂word就会设计,内置海量模板。