c – 数组大小限制

c – 数组大小限制,第1张

概述我有一个我想要克服的数组问题,如果我将const int“are”的值更改为2048,程序运行正常,但是在8192或甚至在4096(只有130,000个元素)它不起作用并且中断.我该如何解决这个问题? #include <iostream>#include <fstream>#include <windows.h>#pragma warning (disable : 4820 4619 4 我有一个我想要克服的数组问题,如果我将const int“are”的值更改为2048,程序运行正常,但是在8192或甚至在4096(只有130,000个元素)它不起作用并且中断.我该如何解决这个问题?
#include <iostream>#include <fstream>#include <windows.h>#pragma warning (disable : 4820 4619 4668 4101)HANDLE ghEvents;const int arc = 2048; const int are = 8192;struct DataStructure_init {    int main_seq[are][32];    int main_seq2[are][32];    int main_seq3[are][32];    int main_lim[are];};struct DataStructure_trus {    int net[arc];     int  r6[arc];    int thr[arc];};int ftrus (unsigned char cmain[],int array_inst[],DataStructure_trus& va);int finit (DataStructure_trus va,DataStructure_init& in);using namespace std;int main(){    unsigned char cmain[are];    int array_inst[64]={0};    DataStructure_trus va;     DataStructure_init in;    ftrus(cmain,array_inst,va);    finit(va,in);    cin.get();}int finit (DataStructure_trus va,DataStructure_init& in){    int nb=0,flag=0,lock=0;    for(int i=0;i<are;i++){        for(int j=0;j<24;j++){        in.main_seq[i][j]=va.thr[(i*24)+j];        }    }    return 0;}int ftrus (unsigned char cmain[],DataStructure_trus& va){    int g=0;     ifstream in("C:\Dev-Cpp\DCS\Decom\trus.txt",ios::binary);    unsigned char c;    while( in.read((char *)&c,1) )    {                   cmain[g]=c;            if(cmain[g]==' ' && cmain[g-1]=='t' && cmain[g-2]=='e' && cmain[g-3]=='n')      {array_inst[1]=g+1;}            else if(cmain[g]==' ' && cmain[g-1]=='r' && cmain[g-2]=='h' && cmain[g-3]=='t') {array_inst[9]=g+1;array_inst[21]=g-7;}            g++;    }    array_inst[29]=g-2;    for(int i=0;i<64;i++){va.r6[i]=0;}    for(int i=array_inst[1];i<array_inst[21];i++){        if(cmain[i]=='1'){va.net[va.r6[1]]=1;va.r6[1]++;}                    else {va.net[va.r6[1]]=0;va.r6[1]++;}    }    for(int i=array_inst[9];i<array_inst[29];i++){        if(cmain[i]=='1'){va.thr[va.r6[9]]=1;va.r6[9]++;}                    else {va.thr[va.r6[9]]=0;va.r6[9]++;}    }    return 0;}
解决方法 您不必将数组放在main()中的堆栈上,您也可以在进入函数之前静态地分配它们.这将把它们放在一个不受默认堆栈大小限制的区域.
unsigned char cmain[are];int array_inst[64]={0};DataStructure_trus va;DataStructure_init in;int main() {   ftrus(cmain,va);   finit(va,in);   cin.get(); }
总结

以上是内存溢出为你收集整理的c – 数组大小限制全部内容,希望文章能够帮你解决c – 数组大小限制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1253924.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存