zoukankan      html  css  js  c++  java
  • 关于较大数组开辟问题

    之前在编译器里遇到过相似问题,只知道把变量声明拿出来就好了,现在终于知道为什么了!!!


    VC定义数组时请注意大小!定义时,局部数组大小<=1MB,全局数组<=2GB,定义时如果超过这个限制将会出现如"segment error"之类的错误.以下的程序可以帮助你证明这一点.



    以下程序数组如果再大点,运行出错,说明局部变量分配内存<=1MB
    #include<stdio.h>
    int main()
    {
    int a[1024*1024/4-4000];
    int i;
    for(i=0;i<1024*1024/4-4000;i++)
    {
    a[i]=i;
    printf("%d ",a[i]);
    }
    return 0;



    以下程序数组如果再大点,运行出错,说明全局变量分配内存<=2GB
    #include<stdio.h>
    int a[1024*1024*470];
    int main()
    {
    long int i;
    for(i=0;i<1024*1024*470;i++)
    {
    a[i]=i;
    printf("%d ",a[i]);
    }
    return 0;
    }


    内存的三种分配方式:静态存储区分配,栈上分配,堆上分配。 全局数组是在静态存储区分配,而局部数组是在栈上分配,所以大小受到的限制不一样.
  • 相关阅读:
    Hihocoder-小Hi的烦恼
    Python包下载与离线安装
    Shell输出颜色设置
    MySQL主从配置
    MySQL初始化与用户配置
    [转]常用 GDB 命令中文速览
    搭建github静态博客
    树莓派上手
    vim安装与配置
    数组,看了你就懂了!
  • 原文地址:https://www.cnblogs.com/zswbky/p/6717876.html
Copyright © 2011-2022 走看看