Domanda

Sto lavorando da un esempio di codice che alloca un array locale relativamente grande. (32768 per essere precisi) Quando provo lo stesso ottengo un comportamento che sembra essere un overflow dello stack. Ora mi chiedevo se il mio esempio avesse forse impostato lo stack su una dimensione più grande della mia applicazione. È possibile? se sì, come?

È stato utile?

Soluzione

Con il compilatore Microsoft è possibile utilizzare / F per impostare la dimensione dello stack, tuttavia sembra che si debba allocare l'oggetto sull'heap. Dovresti avere una ragione per cui stai allocando questo nello stack anziché nell'heap.

Modifica: Questa pagina offre una buona croce- guasto alla piattaforma, sebbene possa essere datato.

Altri suggerimenti

È possibile utilizzare il flag del compilatore / F per impostare la dimensione dello stack predefinita o specificarlo come secondo parametro in funzione CreateThread .

Invece di fare confusione con le dimensioni dello stack, perché non usi semplicemente uno std :: vector o allochi anche un array in modo dinamico?

Potresti creare un nuovo thread per questo lavoro. In genere puoi specificare la dimensione dello stack quando crei un thread, e certamente con la funzione CreateThread () di vs2008

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