Domanda

Sto cercando di creare un array: int HR [32487834]; questo non occupa solo circa 128 - 130 megabyte di memoria? sto usando MS c ++ Visual Studios 2005 SP1 e si arresta in modo anomalo e mi dice di overflow dello stack.

È stato utile?

Soluzione

Anche se il tuo computer potrebbe avere gigabyte di memoria, lo stack no (per impostazione predefinita, penso che sia ~ 1 MB su Windows, ma puoi ingrandirlo).

Prova ad assegnarlo sull'heap con new [] .

Altri suggerimenti

Usa un vettore: i dati dell'array verranno posizionati nell'heap, mentre l'array verrà comunque ripulito automaticamente quando si esce dalla funzione o dal blocco:

std::vector<int> HR( 32487834);

Lo stack non è così grande per impostazione predefinita. Puoi impostare le dimensioni dello stack con / F switch del compilatore .

  

Senza questa opzione la dimensione dello stack   il valore predefinito è 1 MB. L'argomento numero   può essere in decimale o in linguaggio C.   notazione. L'argomento può variare da   1 alla dimensione massima dello stack accettata   dal linker. Il linker arrotonda per eccesso   il valore specificato al 4 più vicino   byte. Lo spazio tra / F e numero   è facoltativo.

Puoi anche utilizzare / opzione linker STACK per eseguibili

Ma probabilmente dovresti dividere il problema in parti invece di fare tutto in una volta. Hai davvero bisogno di tutta quella memoria tutta in una volta?

Di solito è possibile allocare più memoria sull'heap che anche sullo stack.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top