2 xwinterwinterwinterx XwinterwinterwinterX 于 2016.04.13 18:38 提问

C++,定义大数组时出现了未知错误

错误

 ||=== Build: Debug in proj1 (compiler: GNU GCC Compiler) ===|
obj/Debug/main.o||In function `__static_initialization_and_destruction_0':|
 relocation truncated to fit||R_X86_64_32 against `.bss'|
 relocation truncated to fit||R_X86_64_32 against `.bss'|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

我的代码

 #include<iostream>
using namespace std;
int a[99999999999999];
int main()
{
    return 0;
}

6个回答

qq423399099
qq423399099   Ds   Rxr 2016.04.13 20:46
已采纳

99999999999999*4/1024/1024/1024=372529G=363.8T
可以将数据保存在数据库中或文件中进行处理。
保存在文件的话可以一个对象保存为一行,一行一行读取并处理。

xiaobai_2511
xiaobai_2511   2016.04.13 19:17

你要那么大的数组干什么 99999999999999*4 你算算多少个字节

CSDNXIAON
CSDNXIAON   2016.04.13 18:42

函数内定义大数组出现段错误
程序中定义了大数组或需要很大栈内存时,出现stack overflow 错误的解决方法(vs2008)
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

q610098308
q610098308   2016.04.13 22:30

一个程序可分配的最大栈内存是有限制的,如果大的话可以用堆内存,但也需要判断是否能够成功。

HOLY3KILL
HOLY3KILL   2016.04.20 09:28

太大了。不过以前定义时有这么弄过
#define MAX_SIZE 10000000
int a[MAX_SIZE]


hijack00
hijack00   Rxr 2016.08.26 22:43

编译器不支持定义那么大的静态数组,如果确有需要,可以在程序中动态分配这么大的空间。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C++定义未知元素个数的数组
1、使用动态内存分配方法c++申请动态内存:int arraySize; //定义元素个数cin&amp;gt;&amp;gt;arraySize; //输入元素个数int *p; //指针指向一个数组p =  new int[arraySize]; //动态分配内存...delete []p; //最后释放内存空间c语言申请动态内存:int arraySize; //定义元素个数scanf(&quot;%d&quot;,&amp;amp;...
关于C语言开大数组溢出的问题
C语言的内存分配、堆栈溢出、全局变量、局部变量、全局数组大小、局部数组大小
创建一个动态空间存储未知大小的二维数组
创建一个动态空间存储未知大小的二维数组在c/c++中,数组往往只能在给定大小的时候才能使用,否则就需要创建一个足够大的数组进行存储,这样造成空间资源的浪费。但在很多情况下,我们往往需要一个变量来确定数组的大小。实现头文件 stdlib.h 先定义一个指针,并使用realloc、malloc、calloc函数来分配空间大小。realloc、malloc、calloc的使用请看 http://blo
关于在函数中定义大数组(局部变量)所导致的问题
函数中定义大数组(局部变量)的问题 今天调程序时(我用的是DSP处理器),在函数内部定义了两个较大的数组:float a[300],float[300],编译无错也无警告, 但运行时程序会出错,像是跑飞的样子,后来我将这两个大数组放到函数外(全局变量),则就正常了。 后来我百度“函数中定义大数组”,说是这造成了栈溢出,还建议不要在函数中使用较的数组。   一个由c/C++编译的程序占
C/C++创建数组过大报错的解决方法
1 改编译器的配置 2 把例如 const __int64  VT = 1000000; int tmp[VT];代码修改为以下(其实就是用指针申请内存) const __int64  VT = 1000000; int *tmp = new int[VT]; 但是要记得delete掉指针。 3.使用stl::vector容器创建数组。具体看vector的使用方法
解决大数组定义时栈溢出的两种方法
1. 数据结构上: 栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在 WINDOWS下,栈的大小是1M(也有的说是2M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。   堆:堆是向高地址扩展的数据结构,是不连续的内存区域
数组编程中的常见错误
数组编程中的常见错误 (1)定义数组时,数组长度要用常量或常量表达式,不能用变量。 int a[5];  //ok    用常量定义数组大小 const int length=5;      int a[length];   //ok   用常变量定义数组大小 #define LENGTH 5    int a[5];  //ok    用符号常量定义数组大小 int n
C++函数内大数组导致段错误
在函数里面不适合定义很大的临时数组变量。应该使用堆动态分配。栈大小有限,太大就报错了,所以要放到堆里,可以定义全局变量或动态分配。 函数内部(局部变量)禁止定义大数组,而应使用动态内存;如数组需传入函数应使用指针作为参数;就算数组不大但是如果函数嵌套很多的话也会发生segment error。 函数内是在栈分配内存,栈大小一般限制在1M到2M,函数外则是全局变量,在DATA段分配内存。 在占
c++未知数组大小如何创建
两种方法,简单一点的,C++允许动态定义数组,所以可以这样 #include using namespace std; int main() { int m, n; cin >> m >> n; int a[m][n]; int i, j; for(i = 0; i < m; i ++) for(j = 0; j < n; j ++) cin >> a[i][j]; co
VC定义超大数组时,stack OverFlow的解决方法
现象: 在一个类的头文件中定义了一个数组 编译后出现: stack overflow,堆栈溢出 (下文中,stack=栈=堆栈) 这次在写一个程序的时候,定义了一个比较大的int数组,发现大概元素个数超过25W个的时候,程序就不正常了,如果个数再多,还可能出现一个Windows错误,然后问要不要发送错误报告.